一、测试场景
1、login shell 场景: 当系统启动时或你开启一个新的终端登录系统时,系统通过调用/bin/login程序处理登录并在一个shell中显示命令行提示符,这个shell就是login shell,也就是说通过用户名和密码登录的shell,例如:ssh远程登录以及图形界面登录(输入用户名和密码)
2、non-login shell 场景: 当用户直接在shell窗口中通过bash以及登录图形界面后打开的shell(CTRL+ALT+T)。
二、配置文件解析顺序
login shell :
1、全局(所有用户)设定 /etc/profile 只有login shell 才会读取
2、局部(依据用户)设定 ~/.bash_profile
~/.bash_login
~/.profile
其實 bash 的 login shell 設定只會讀取上面三個檔案的其中一個, 而讀取的順序則是依照上面的順序。也就是說,如果 ~/.bash_profile 存在,那麼其他兩個檔案不論有無存在,都不會被讀取。 如果 ~/.bash_profile 不存在才會去讀取 ~/.bash_login,而前兩者都不存在才會讀取 ~/.profile 的意思。(摘自鸟哥)
non-login shell:
局部(依据用户)设定: ~/.bashrc
當你取得 non-login shell 時,該 bash 設定檔僅會讀取 ~/.bashrc 而已啦(摘自鸟哥)。但是从父进程上继承过来的环境变量依然存在!