环境变量
查看环境变量命令
命令 | 功能 |
---|---|
env和printenv | 不会对变量进行排序,也不会输出局部变量和用户定义变量 |
set | 会显示出全局变量、局部变量以及用户定义变量。它还会按照字母顺序对结果进行排序 |
设置全局环境变量
在设置全局环境变量的进程所创建的子进程中,该变量都是可见的。创建全局环境变量的方法是先创建一个局部环境变量,然后再把它导出到全局环境中。
这个过程通过export命令来完成,变量名前不需要加$。
修改子shell中全局环境变量并不会影响到父shell中该变量的值。
子shell甚至无法使用export命令改变父shell中的全局环境变量的值。
$ my_variable="I am man"
$ export my_variable
$
$ echo $my_variable
I am man
$
$ bash
$
$ echo $my_variable
I am man
$
$my_variable="Null"
$
$export my_variable
$
$echo $my_variable
Null
$
$exit
exit
$
$ echo $my_variable
I am man
$
删除环境变量
用unset命令删除,不用使用$,如果在子进程里删除变量并不会对父进程有影响。
$ echo $my_variable
I am man
$
$ unset my_variable
$
$ echo $my_variable
$
窍门: 如果要用到变量,使用$;如果要操作变量,不使用$。这条规则的一个例外就是使用printenv显示某个变量的值。
定位系统环境变量
登录shell
登录shell会从5个不同的启动文件里读取命令:
- /etc/profile
- $HOME/.bash_profile
- $HOME/.bashrc
- $HOME/.bash_login
- $HOME/.profile
- /etc/profile
/etc/profile文件是bash shell默认的主启动文件。 - $HOME目录下的启动文件
shell会按照下列顺序,运行第一个被找到的文件,余下的则被忽略。
- $HOME/.bash_profile
** $HOME/.bash_login - $HOME/.profile
没有$HOME/.bashrc文件,是因为该文件通常通过其他文件运行的。