一图让你理解Linux中的环境变量设置

本文首先介绍了环境变量的通俗理解,然后给出了几种不同设置方式的详细解释,与其他博客不同,本博客通过一张图总体描述不同设置方式的作用范围,生效时间。最后通过一个具体的例子说明了环境变量的设置格式。

  • 什么是环境变量

所谓的环境变量有时候是一种“快捷方式”,有时候又是一种类“宏”。比如说你某个目录中安装了jdk,为了能够在任何目录中都能直接运行 java 命令此时你需要将 java命令所在的目录添加到PATH环境变量中,这时候环境变量就是一种“快捷方式”。再比如说,有时候需要每次都进入一个很长的文件路径 /home/zld/test1/test2 ,为了省事,你可以设置环境变量 TEST=/home/zld/test1/test2 下次需要时你只需要 cd $TEST就可以了,这时候环境变量TEST就是一个“宏”。

  • Linux 中环境变量的设置方式

据传说Linux中的环境变量设置方式有直接在当前bash export 环境变量=xxx,在~/.bashrc中添加上述语句,在~/.profile中添加,在 /etc/profile中添加等等。那么这些方式有什么不同呢,下面我想通过一个图来说明环境变量的工作过程。图中描述了不同的设置方式的作用域以及设置生效的时间。

                       

(1)/etc/profile是针对所有用户的设置,该文件只在在系统启动时加载执行一次,因此如果在/etc/profile中修改了环境变量,则必须重启才能生效。其环境变量的设置对所有用户有效。

(2) ~/.profile 和~/.bashrc都是用户层面的设置。在用户登录时会优先加载执行 ~/.profile,并在~/。~/.profile中调用执行 ~/.bashrc 。这两个设置都对当前用户开启的所有bash窗口有效。~/.profile只在用户登录时执行一次,因此必须注销用户重新登录才能生效。~/.bashrc则可以通过source ~/.bashrc 立即生效。

(3)在当前窗口的 export 环境变量=xxx 的操作可以立即生效,但是只对当前窗口有效。对其他窗口无效,即使是同一用户的不同窗口。       

以上几种方式的共同特点都是执行了   export 环境变量=xxx   设置了环境变量,只是执行的时间和作用域不同。因此一个有趣的问题是,Ubantu 中默认的编码方式为 LANG="en_US.UTF-8"。如果为了支持中文在~/.bashrc 中改成了 export LANG=zh_CN 。过了一段时间,你又想改成默认的配置,于是你就将export LANG=zh_CN注释掉,并直接source,此时觉得应该就是默认了,但发现并没有如愿以偿。原因是环境变量的改变的本质因为执行了 export 语句,你只是注释了该语句,并没有执行新的export,因此,并不能达成。解决办法是重新启动。                    

  • 环境变量的设置格式

下面以 LD_LIBRARY_PATH 为例说明设置格式。LD_LIBRARY_PATH 是Linux中指明动态链接库位置的一个环境变量。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:your_path

 其中 $LD_LIBRARY_PATH 表示原有的动态链接库路径,your_path是你要设置的链接库的位置,冒号用于链接不同位置,防止覆盖原有的路径。当然这种方式只是针对需要保留原有变量值的情形。对于只需要设置成新的值情形比如 设置 LANG,直接覆盖即可。

猜你喜欢

转载自blog.csdn.net/zlgahu/article/details/82714501