linux登陆系统后,环境变量加载顺序
登陆系统后,环境变量加载顺序
登陆shell:(SSH或在控制台登录)需要输入账户密码
- /etc/profile -> /etc/profile.d/*.sh -> /etc/bashrc -> ~/.bashrc -> ~/.bash_profile
非登陆shell:(不需要输入账户密码)
- ~/.bashrc -> /etc/bashrc -> /etc/profile.d/*.sh
验证可以通过每个文件新增echo输出,su - xxx / su xxx
理解登录Shell与非登录Shell:
登录Shell(Login Shell):
- 通常是通过终端登录系统(例如,通过SSH或在控制台登录)时启动的Shell。
非登录Shell(Non-login Shell):
- 在已经登录的系统上启动的Shell,不需要再次输入用户名和密码。
非登录Shell的常见情况:
- 在图形界面中打开终端:
- 当你在Linux桌面环境中打开终端程序时,启动的Shell通常是非登录Shell。
- 在一个已有的Shell会话中启动新的Shell:
- 如果你在一个已经运行的终端中输入
bash
或sh
等命令,启动一个新的Shell,这个新Shell也是非登录Shell。
- 如果你在一个已经运行的终端中输入
- 运行Shell脚本:
- 当执行一个Shell脚本时,脚本中的Shell环境通常是非登录Shell。
- 在程序中调用Shell:
- 例如,某些程序会调用系统命令,这些命令的执行环境也属于非登陆shell。
关键区别与配置文件:
- 登录Shell和非登录Shell的主要区别在于它们读取的配置文件不同,这决定了Shell环境的初始化方式。
- 非登录Shell通常主要依赖
~/.bashrc
文件来设置环境,而登录Shell则会优先读取profile相关文件。
补充说明:
- Shell还可以分为交互式Shell和非交互式Shell。
- 交互式Shell允许用户与Shell进行交互,输入命令并查看输出。
- 非交互式Shell通常用于执行Shell脚本,不需要用户交互。
- 所以非登陆shell还可以细分为,交互式非登陆shell,和非交互式非登陆shell。