环境变量初始化与对应文件的生效顺序
注解 —和 ↓是实线,------是虚线
登陆shell读取环境变量文件的流程
profile —> ~/.bash_profile —> 操作bash
| |
| |
| --------------->~/.bashrc
| ↓
--------> /etc/profile.d/*.sh <----------- /etc/bashrc
↓
/etc/sysconfig/i18n
注意两个bashrc文件 : ~/.bashrc /etc/bashrc
两个profile文件 : ~/.bash_profile /etc/profile
四个目录 : /etc/ ~/ (当前用户家目录) /etc/profile.d/ /etc/sysconfig/
bashrc和profile .bashrc和.bash_profile
用户登陆系统后会先加载/etc/profile全局变量文件,加载完后执行/etc/profile.d/目录下的脚本文件(如:系统的字符集设置/etc/sysconfig/i18n),然后在运行$HOME/.bash_profile(用户环境变量文件),在这文件里找到$HOME/.bashrc(用户环境变量文件) ,就有执行,没有不执行,在$HOME/.bashrc 找 /etc/bashrc(全局变量文件)有就执行,没有就不执行。
如果希望用户的shell不是登陆时启动的(如手动敲下bash时启动或者远程ssh连接情况),
非登陆shell只会加载$HOME/.bashrc(用户环境变量文件),并会去找/etc/bashrc(全局变量文件)
#总结:非登陆shell想要读到自定义的环境变量,需要将变量设定写入$HOME/.bashrc(用户环境变量文件)或/etc/bashrc(全局变量文件) #因为他只能去看这两个文件(两个bashrc文件)(他看不了两个profile文件)