这张图是一个关于Linux系统中shell启动时配置文件加载顺序的流程图。图中分为登录shell和非登录shell两种情况,来描述不同配置文件的读取过程。
-
登录shell:
- 当用户登录时,会首先检查是否存在
/etc/profile
文件,如果存在,则执行(source)这个文件。 - 接着检查
/etc/profile.d/
目录下的所有脚本,并执行它们,这是系统级别的环境设置。 - 然后,shell会检查用户主目录下是否存在
.bash_profile
文件,如果存在,则执行这个文件。 - 如果
.bash_profile
不存在,shell会检查是否存在.bashrc
文件,如果存在,则执行它。 - 如果
.bashrc
也不存在,shell会回退到检查是否存在/etc/bashrc
文件,并执行它。 - 最后,完成这些配置文件的加载后,用户将获得bash提示符,可以开始使用shell。
- 当用户登录时,会首先检查是否存在
-
非登录shell(比如打开一个新的终端):
- 这种情况下,会直接检查用户主目录下是否存在
.bashrc
文件,如果存在,则执行这个文件。 - 如果用户的
.bashrc
文件不存在,shell会检查是否存在/etc/bashrc
文件,并执行它。 - 完成配置文件的加载后,用户同样会得到bash提示符。
- 这种情况下,会直接检查用户主目录下是否存在
总的来说,这张图解释了Linux系统中,用户登录和开启新shell时,不同配置文件加载的顺序和条件。这个过程对于设置环境变量、别名、shell选项等都是非常重要的。
检测shopt login_shell判断当前shell是否是登录shell