1、登錄shell
登錄shell時,linux會按一定規則讀取啟動幾個配置文件:
/ect/profile
$HOME/.bash_profile
$HOME/.bashrc
$HOME/.bash_login
$HOME/.profile
其中 /ect/profile 文件是系統默認的主啟動文件,系統上每個用戶登錄時都會執行;
a、命令行登錄和ssh登錄,shell會按照以下順序,運行第一個被找到的文件,余下的會被忽略:
$HOME/.bash_profile
$HOME/.bash_login
$HOME/.profile
上面沒有 $HOME/.bashrc ,因為該文件一般通過其他文件運行。
b、圖形界面登錄,只加載 /ect/profile 和 $HOME/.profile ,其他的會被忽略。
對於 no-login shell,即圖形界面打開的shell,只會讀入 $HOME/.bashrc 文件,不會檢查 /etc/.profile 等其他登錄shell文件。
2、交互式shell
不是登錄系統時啟動,提供命令行提示符來輸入命令。
(不會訪問 /etc/profile 文件,會檢查 $HOME/.bashrc 文件)
3、非交互式shell
系統執行腳本時所用,沒有命令行提示符。
參考:
https://blog.csdn.net/yanjiangbo/article/details/6427580
《Linux命令行與shell腳本編程大全》(第三版)