shell中环境变量

环境变量

查看环境变量命令

命令 功能
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
  1. /etc/profile
    /etc/profile文件是bash shell默认的主启动文件。
  2. $HOME目录下的启动文件
    shell会按照下列顺序,运行第一个被找到的文件,余下的则被忽略。
  • $HOME/.bash_profile
    ** $HOME/.bash_login
  • $HOME/.profile
    没有$HOME/.bashrc文件,是因为该文件通常通过其他文件运行的。

你可能感兴趣的:(shell中环境变量)