本文摘自PHP中文网,作者黄舟,侵删。
Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量。所以下面这篇文章主要给大家介绍了关于Linux中环境变量配置的相关资料,需要的朋友可以参考下。简介
我们大家在平时使用Linux的时候,经常需要配置一些环境变量,这时候一般都是网上随便搜搜就有人介绍经验的。不过问题在于他们的方法各不相同,有人说配置在/etc/profile里,有人说配置在/etc/environment,有人说配置在~/.bash_profile里,有人说配置在~/.bashrc里,有人说配置在~/.bash_login里,还有人说配置在~/.profile里。。。这真是公说公有理。。。那么问题来了,Linux到底是怎么读取配置文件的呢,依据又是什么呢?下面这篇文章就来给大家详细的介绍下,一起来看看吧。
文档
我一向讨厌那种说结论不说出处的行为,这会给人一种“我凭什么相信你”的感觉。而且事实上没有出处就随便议论得出的结论也基本上是人云亦云的。事实上,与其去问别人,不如去问文档。 找了一会,发现关于环境变量配置的相关文档其实是在bash命令的man文档里,毕竟我们常用的就是这个shell。
在$man bash里,我发现了下面的一段文字:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
通过这段文字,我们发现其实所谓的环境变量配置文件,就是在shell登陆的时候自动加载的那些文件。不过他所定义的登陆却分为两种:
login shell登陆。
interactive shell登陆。
login shell 登陆
所谓的login shell登陆,实际上就是指需要输入密码的登陆。具体的说,包括开机登陆、ssh登陆,或者是输入bash --login这种“假装自己输入密码登陆”的方式。 在这种登陆方式下,系统会先读取/etc/profile文件,然后,系统会依次搜索~/.bash_profile、~/.bash_login、~/.profile 这三个文件,并运行只其中第一个存在的文件。 尤其要注意到后三个文件的“逻辑或”的关系。很多情况下我们会发现,明明已经修改了~/.profile文件为什么重新登陆后配置不生效呢?这是因为我们的系统可能存在了前面两个文件中的一个,导致不会继续读取剩下的文件。
下面的三张图很好的说明了这个问题:
interactive shell 登陆
所谓的interactive shell登陆,其实就是相对于login shell登陆而言的。我们平时在登陆后右键打开终端、或者CTRL+ALT+T打开终端都是interactive shell登陆。 在这种登陆方式下,系统会依次读取/etc/bash.bashrc和~/.bashrc,并加以执行。 通常情况下,~/.bashrc文件里会默认记录一些常量和一些别名,尤其是$PS1变量,这个变量决定着bash提示符的格式、样式以及颜色等。
注意:
需要注意的是,这两种登陆方式读取的是不同的配置文件,而且互相之间没有交集,因此当我们需要配置环境变量时,我们要根据自己的登陆方式将需要的变量配置到不同的文件里。 例如下面这个经典的问题。
典型问题
环境配置文件配置异常的例子是,当我用ssh登录服务器的时候,发现提示符是这样的:
1 |
|
没错,就像上面第三张图片里的那个bash一样,提示符非常奇怪,而且当输入ls时文件和文件夹的颜色也没有区分。 这个问题显然是由于$PS1这个环境变量没有配置,导致他用了默认值,虽然查看.bashrc文件时发现有$PS1这个变量的定义。,但是由于ssh属于login shell,因此他在登陆时读入的配置文件是/etc/profile一类的文件,并没有读入.bashrc。 导致这个问题的原因通常是我们误删除了/etc/profile里默认的配置文件,因此解决的办法也很简单。。。把.bashrc里的部分文件复制到/etc/profile里就行了。
这个问题给我们的启示是,当我们为服务器配置变量时,尽量配置到/etc/profile里或者~/.bash_profile里,因为用ssh登录服务器是基本上用不到.bashrc文件的;当我们给自己的电脑配置环境变量时,尽量配置到.bashrc里,因为这样我们只要打开终端就会读入这个文件,这样就可以不用注销就能应用配置了(只有注销重新登录才会应用/etc/profile一类的配置文件)。
总结
以上就是Linux下关于环境变量如何配置的步骤分享(图)的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
如何导入自定义镜像时选择 customized Linux(定制版镜像)
更多相关阅读请进入《Linux》频道 >>