环境变量初始化和对应文件的加载顺序

bash检查的环境变量文件的情况取决于系统运行Shell的方式。

系统运行Shell的方式一般有3种:

1) 通过系统用户登录后默认运行的Shell。

2) 非登录交互式运行Shell。

3) 执行脚本运行非交互式Shell。

 

当用户登录Linux系统时,Shell会作为登录Shell启动。此时的登录Shell加载环境变量的顺序如图所示。

登录Shell读取环境变量文件的流程

 

1.用户登录系统后首先会加载/etc/profile全局环境变量文件,这是Linux系统上默认的Shell主环境变量文件。系统上每个用户登录都会加载这个文件。

 

2.当加载完/etc/profile文件后,才会执行/etc/profile.d目录下的脚本文件,这个目录下的脚本文件有很多,例如:系统的字符集设置(/etc/sysconfig/i18n)等。

 

3.之后开始运行$HOME/.bash_profile(用户环境变量文件),在这个文件中,又会去找$HOME/.bashrc(用户环境变量文件),如果有,则执行,如果没有,则不执行。在$HOME/.bashrc文件中又会去找/etc/bashrc(全局环境变量文件),如果有,则执行,如果没有,则不执行。

 

4.如果用户的Shell不是登录时启动的(比如手动敲下bash时启动或者其他不需要输入密码的登录及远程SSH连接情况 ),那么这种非登录Shell只会加载$HOME/.bashrc (用户环境变量文件),并会去找/etc/bashrc(全局环境变量文件)

说明:

因此如果希望在非登录Shell下也可读到设置的环境变量等内容,就需要将变量设定等写入$HOME/.bashrc或者/etc/bashrc,而不是$HOME/.bash_profile或/etc/profile。

 

 

©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页