环境变量的定义
全局环境变量对于shell会话和所有生成的子shell都是可见的。局部变量则只对创建它们的shell可见。
使用env或printenv命令查看全局变量。
使用echo $变量名,或者env,printenv+变量名,可以查看部分变量的值。
set命令与env和printenv的区别是,输出之前会按字母顺序进行排序再输出。
设置用户自定变量
使用echo命令即可
$ echo $my_variable
$ my_variable=Hello
$
$ echo $my_variable
Hello
如果要给变量赋一个含有空格的字符串值,必须用单引号来界定字符串的首和尾,变量名、等号和值之间没有空格。
环境变量名均使用大写字母。
如果你在子进程中设置了一个局部变量,那么一旦你退出了子进程,那个局部环境变量就不可用。
创建全局变量,先创建一个局部变量,再通过export命令实现。
export+局部变量
在子shell中修改全部变量的值,也只会影响该子shell中的值。
删除环境变量
unset+变量名
修改PATH环境变量
PATH环境变量定义了用于进行命令和程序查找的目录。shell进行搜索时会按照PATH中的路径进行搜索,目录使用冒号进行分割,在进行搜索时,如果不使用绝对路径,系统找不到,并会报错。
-bash: XXXX: command not found
可以把新的搜索目录添加到现有的PATH环境变量中,无需从头定义。PATH中各个目录之间可以把新的搜索目录添加到现有的PATH环境变量中,无需从头定义。PATH中各个目录之间。
PATH=$PATH:/home/christine/Scripts
引用原有的PATH并用冒号连接新加入的部分。
将目录加到PATH环境变量之后,你现在就可以在虚拟目录结构中的任何位置执行程序。
简单的方法,可以利用单点符号,将当前路径加入。
$PATH:.
以上的修改方法只能持续到退出系统。
启动bash shell的3种方式
在你登入Linux系统启动一个bash shell时,默认情况下bash会在几个文件中查找命令。这些文件叫作启动文件或环境文件。bash检查的启动文件取决于你启动bash shell的方式。启动bash shell有3种方式:
1.登录时作为默认登录shell
从5个不同的启动文件读取,其中,/etc/profile文件是系统上默认的bash shell的主启动文件。系统上的每个用户登录时都会执行这个启动文件。
3个针对每个用户的本地启动文件:
H
O
M
E
/
.
b
a
s
h
p
r
o
f
i
l
e
、
HOME/.bash_profile、
HOME/.bashprofile、HOME/.bash_login和$HOME/.profile。用户可以在这些文件中定制自己想要的环境变量和启动脚本。
2.作为非登录shell的交互式shell
如果bash shell不是登录系统时启动的(比如是在命令行提示符下敲入bash时启动),那启动的shell叫作交互式shell。
如果bash是作为交互式shell启动的,它就不会访问/etc/profile文件,只会检查用户HOME目录中的.bashrc文件。
3.作为运行脚本的非交互shell
系统执行shell脚本时用的就是这种shell。不同的地方在于它
没有命令行提示符。
为了处理这种情况,bash shell提供了BASH_ENV环境变量。当shell启动一个非交互式shell进程时,它会检查这个环境变量来查看要执行的启动文件。如果有指定的文件,shell会执行该文件里的命令。
永久性修改环境变量
在/etc/profile.d目录中创建一个以.sh结尾的文件。把所有新的或修改过的全局环境变量设置放在这个文件中。
环境变量数组
环境变量可以存储为数组变量。
$ mytest=(one two three four five)
通过位置引用
$ echo ${mytest[2]}
three
通过通配符显示所有
$ echo ${mytest[*]}
one two four five