在登录Linux系统并启动一个bash shell时,默认情况下bash会在若干个文件中查找环境变量的设置,这些文件可统称为系统环境变量。bash检查的环境变量文件的情况取决于系统运行shell的方式,方式一般有以下三种,我们这儿仅讨论前两种。
Ø
通过系统用户登录后默认运行的shell(Login Shell)
Ø
非登录交互式运行shell(Non-login Shell)
Ø
执行脚本运行非交互式shell
当用户登录Linux系统时,shell会作为登录shell(Login Shell)启动,此时的登录shell加载环境变量的顺序是 /etc/profile → ~/.bash_profile
→ [ ~/.bashrc → [ /etc/bashrc ] ]
用户登录系统后首先会加载/etc/profile全局变量文件,这是Linux系统上默认的shell主环境变量文件,系统上每个用户登录都会加载这个文件。
之后开始运行$HOME/.bash_profile(用户环境变量文件),在这个文件中,又会通过if语句去判断$HOME/.bashrc是否存在(用户环境变量文件),如果有则执行,如果没有则不执行。在$HOME/.bashrc文件中又会通过if语句去判断/etc/bashrc是否存在(全局环境变量文件),如果有则执行,如果没有则不执行。
如果用户的shell不是登录时启动的,非登录shell(Non-login Shell)只会加载$HOME/.bashrc(用户环境变量文件),并会通过if语句去判断/etc/bashrc是否存在(全局环境变量文件),如果有则执行,如果没有则不执行。