问题背景:
我原本想着不写的,但是最近的几次国产化系统(Kylin,OpenEuler),包括部分centOS和Ubuntu部署系统的时候都出现了这个情况,我还是写一写吧。
按道理来说,每次部署系统的时候,执行source /etc/profile这个命令的话,我对应配置的环境变量理应全局生效的。
在这几个系统中,/etc/profile中添加环境变量后,是使用source /etc/profile编译后只能在当前终端生效;重新开启一个终端后,该环境变量失效。
解决办法奉上:
直接在root权限下,执行这个命令
# vim ~/.bashrc
在文件的最后添加这个内容:
source /etc/profile
然后保存退出
再执行一次source /etc/profile
这个问题就解决了
具体的原因:(应该是这样的,仅供参考)
环境变量设置方法的思路是这样的:
1、/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件。这个文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。
2、/etc/environment:在登录时操作系统使用的第二个文件。系统在读取profile前,设置环境文件的环境变量。但是这个文件我看了下,是空的。也就是说,系统不读取这个里面的东西了。
3、~/.bash_profile:在登录时用到的第三个文件是.profile文件。每个用户都可使用该文件输入专用于自己使用的shell信息。当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
/etc/bashrc;为每一个运行bash shell的用户执行此文件。当bash shell被打开时,该文件被读取。
4、~/.bashrc:该文件包含专用于当前使用用户的bash shell的bash信息,当该用户登录时,每次打开新的shell时,该该文件被读取。
这几个环境变量的优先级是:1>2>3
source命令也称为“点命令”,也就是一个点符号(.),是bash的内部命令。
功能:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句
source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
c/profile:在登录时,操作系统定制用户环境时使用的第一个文件。这个文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。
2、/etc/environment:在登录时操作系统使用的第二个文件。系统在读取profile前,设置环境文件的环境变量。但是这个文件我看了下,是空的。也就是说,系统不读取这个里面的东西了。
3、~/.bash_profile:在登录时用到的第三个文件是.profile文件。每个用户都可使用该文件输入专用于自己使用的shell信息。当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。