Linu学习笔记之——变量、环境变量


Linu学习笔记之——变量、环境变量

摘要:主要记录一些关于变量、环境变量的概念、还有子程序、以及个人设置文件的加载顺序。注意掌握两个重要命令:export和source。

一:变量

1.1、变量的概念、作用及获取:

1.1.1 概念:

变量就是以一组文字或符号等,来取代一些设定或者是一串保留的数据

1.1.2 作用:

就如概念所描述、我们可以使用一个简单的东西来标识一个频繁使用、并且臭长的设定或者保留数据、比如使用PATH来表示命令所在目录、这样我们就不用在执行某个命令之前还要先找到他、然后使用绝对路径来表示此命令并执行了。

1.1.3获取:

a) 可以使用命令来显示:

echo $variableName

exp:

                        echo $PATH

则会显示$PATH所标识的内容:

                        /root/jdk1.7.0_51/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

多个值之间使用 “ : “分开、在Windows中使用”;”分开。

b) 可以使用env命令和set命令查看Linux中的环境变量

使用 set 除了会将系统的默认值显示出来之外,连带的所有的你自己设定的变量也会被显示出来!同时需要注意的是,若当时有相当多人同时在在线的话,那么你的变量只能给自己使用(除非改的是系统的预设参数档,如 /etc/profile ),而不会干扰到别人的!

1.2、变量的设置规则

1.2.1命令规则

a) 变量与变量内容以等号『=』来连结;

b) 等号两边不能直接接空格符;

c) 变量名称只能是英文字母与数字,但是数字不能是开头字符;

d) 若有空格符可以使用双引号『 " 』或单引号『 ' 』来将变量内容结合起来,但须要特别留意,双引号内的特殊字符可以保有变量特性,但是单引号内的特殊字符则仅为一般字符;

e) 必要时需要以跳脱字符『 \ 』来将特殊符号(如Enter, $, \, 空格符, '等)变成一般符号;

f) 在一串指令中,还需要藉由其它的指令提供的信息,可以使用 quote 『 ` command` 』;

g) 若该变量为扩增变量内容时,则需以双引号及 $变量名称如:『 "$PATH":/home』继续累加内容;

h) 若该变量需要在其它子程序执行,则需要以 export 来使变量可以动作,如『export PATH』;

i) 通常大写字符为系统预设变量,自行设定变量可以使用小写字符,方便判断(纯粹依照使用者兴趣与嗜好);

j) 取消变量的方法为:『unset 变量名称』。

1.2.2示例

exp:

设置name为andyChen的变量

                        name=andyChen

设置name为andy chen的变量

                        name=andy\ chen
                        name=”andy chen”
                        name=’andy chen’

设置name为当前目录的变量 ` 是 Esc下面的一个按键。

                        name=`pwd`

一定要注意下面双引号与单引号的区别:

                        name="`pwd`"
                        name='`pwd`'

可使用echo $name查看结果对比

                        /root
                        `pwd`

使用echo获取上一个执行命令是否正确执行

                        echo$?

如果输出为 0 则为正确执行、否则为发生错误。 

1.3、子程序与程序

在当前程序中使用命令: bash 则会进入子程序、再获取上面设置的变量:name 会发现为空。这就是变量的作用域的影响。在下面给出介绍。

1.4、变量的作用域

当你登录之后就获取了一个bash、所有的操作都是在这个bash中执行的、当再次执行bash命令的时候就会进入子程序、那么在上一个bash中设定的变量则在这里没有任何效果。

1.5 相关命令

1.5.1 export命令:

export可以将一般自订的变量变成环境变量!当使用export命令将一个变量转换成环境变量的时候、那么就会在整个环境中可以使用这个变量(在这个终端中有效、当开启一个新的终端则无效、有点像浏览器的session)。

前面也说过export不加任何参数是将所有自定义变量和环境变量显示出来、这里不再演示、可以自己看一下。

1.5.2 source命令:

当我们将环境变量追加到文件中之后、需要重新加载此文件、新修改的东西才能生效、但是我们可以使用source + 被修改文件或者 . + 被修改文件。这样新修改的文件可以立即生效。

记得动系统文件之前一定要备份!要不然一不小心系统文件没了、崩了就只能重装了。。。

                        exp:
                        cp/etc/profile /etc/profile.bak
                        echoname=andyChen >> /etc/profile
                        source/etc/profile 《——也可以使用 . /etc/profile 代替
                        echo$name

1.5.3 unset命令

用于取消设定的变量:

                        unset name

二:环境变量

2.1、环境变量的概念与作用

相对于变量而言、环境变量多了一个环境两个字、很简单、就是意味着此变量可以在整个运行环境中存活和使用、整个运行环境就是一个终端界面、包括使用bash打开的子程序中也可以使用、但是不能在不同的终端时候、并且当把这个终端关闭之后、此环境变量也跟随着消失、除非是写在设置文件中、那么每次登录之后系统都会加载设置文件、也就配置文件里面将变量设置成环境变量、这样就不用每次手动设置就可以直接用了、比如PATH等重要变量、后面会有提到。

2.2、环境变量的作用域

未写入文件的:这个终端存活周期中都可以使用、只要终端关闭或者中断、则环境变量消失、

写入文件的:每次启动都会将指定变量设置成环境变量、所以任何终端都可以使用。比如将NAME写入/etc/profile下面、这样所有人都可以使用这个环境变量、当然最好写入自己的设置文件中、这样就只有自己能使用、也避免了影响他人。

2.3、变量转换成环境变量

                export name 

三:变量相关配置文件及加载顺序

3.1、几个配置文件简介

3.1.1 系统设定值相关:

所谓的系统设定值,也就是说每个使用者进入到 bash shell 之后,会先读取的设定档案!预设的设定档案有下列几个:

a) /etc/profile:这个档案设定了几个重要的变量,例如:『PATH、USER、MAIL、HOSTNAME、HISTSIZE、umask』等等,也同时规划出 /etc/inputrc 这个针对键盘热建设定的档案的数据内容。你可以在这里设定总体的 PATH 等等的信息!同时,这个 file 也规划出 /etc/profile.d 及 /etc/inputrc 这两个档案,其中, inputrc 是用在 history (历史指令)的作用上的!总之,你可以了解到刚刚我们学会的变量设定方式,在这个档案中也可以设定!但是设定上需要特别小心,因为所有的使用者皆会使用到这个档案的信息。 

b) /etc/bashrc:这个档案在规划umask 的功能,也同时规划出提示字符的内容(就是PS1 !)。特别留意的是,这个档案在不同的 Linux distribution 里面,摆放的位置可能不太一样! 

c) /etc/man.config:这个档案或许跟 bashshell 较没相关性,但是对于系统管理员来说,却也是很重要的一个档案!这的档案的内容『规范了使用 man 的时候, man page 的路径到哪里去寻找!

这就是系统在设定的时候常常会使用的档案!需要特别留意的是,通常设定完了这几个档案之后,都需要先 logout 在 login 之后才会将设定整个启动起来!

3.1.2 个人设定值相关

个人设定值相关

个人是在个人家目录的几个隐藏文件当中!分别会使用到底下的几个档案! ( 注意!底下的档案都是隐藏档,需要使用 ls -al 方能显示出来 ) ,另外底下那个『 ~ 』代表的是『家目录』的意思:

a) ~/.bash_profile:里面定义了个人化的路径(PATH)与环境变量的文件名称!你可以在这里修改你的个人路径!也可以在 ~/.bashrc 这个个人设定的变量里头修改!有的时候会有 ~/.profile 或 ~/.bash_login 等档案来取代这个档案! 

b) ~/.bashrc:这个档案对于个人喜好的 bash 设定来说,是最重要的!因为这个文件会在最后被加载。 

c) ~/.bash_history:这个档案的用途在于将你曾经使用过的命令记录下来,而当你再次的以上下键搜寻或者直接以 history 搜寻的时候,就可以找到曾经使用过的指令!需要注意的是在这一次的执行过程中的指令,将在你离开 shell 之后才会被纪录到这个档案中,否则将只会先被写到暂存内存中(Cache);可以藉由 history 这个指令来将里头的纪录搜寻出来;这个档案的指令记录笔数,与 HISTFILE 有关,你可以自行在 ~/.bashrc 里头设定,或者直接由 root 在 /etc/profile 里面统一设定大小! 

d) ~/.bash_logout:这个档案则是在『你注销 shell 的时候, BASH 会为你所做的事情!』通常预设是只有 clear 清除屏幕这件事情而已,不过,你也可以将一些备份或者是其它你认为重要的工作写在这个档案中(例如清空暂存盘),那么当你离开 Linux 的时候,就可以解决一些自己想做的事情!

3.2、加载顺序

a) 先读取/etc/profile、再根据/etc/profile的内容去读取其他附加的设置文件、例如/etc/profile.d和/etc/inputrc等设置文件

b) 根据不同用户、到用户家目录去读取~/.bash_profile或~/.bash_login或~/.profile等设置文件

c) 根据不同用户、到用户家目录去读取~/.bashrc

所以登录bash后、最终都会读取的设置文件是~/.bashrc、也就是说这个里面设置的变量都会被读取。

四:练习

4.1 设定一个所有用户可以使用的环境变量

4.1.1实现命令:

                        echoexport TMPVAR=tem_var >> /etc/profile
                        source/etc/profile    

4.1.2 测试命令

                        echo $ TMPVAR
                        bash
                        echo $ TMPVAR
                        su test_user_2
                        echo $ TMPVAR

如果都输出:tem_var则表示成功。

4.2设定一个只有一个用户可以使用的环境变量

4.2.1实现命令:

                        root@ubuntu:~# su test_user_2
                        test_user_2@ubuntu:~$ echo exportTUV=test_user_tmp_var >> ~/.bashrc
                        test_user_2@ubuntu:~$ source ~/.bashrc

4.2.2 测试命令

                        test_user_2@ubuntu:~$ echo $TUV
                        test_user_tmp_var
                        test_user_2@ubuntu:~$ exit
                        exit
                        root@ubuntu:~# echo $TUV

相关内容