shell腳本分為三類:登錄腳本、交互式腳本、非交互式腳本
一、
登錄腳本類似於windows下的計算機設置中的登錄腳本和賬戶設置下的登錄腳本的合集(我是這么理解的哈)。
其配置文件的關鍵詞為prefile,它有以下幾個關鍵配置文件:
/etc/prefile 這個是計算機腳本; [$home/.prefile ; $home/.bash_prefile ; $home/.bash_login]這三個是賬戶腳本,根據不同發行版名字不同(坑爹的linux) ;
說明:/etc/prefile之所以這么牛逼,應該與其內部含有export有關,export定義的環境變量,將被定義為全局變量。
讀取順序
登入賬號前/etc/profile >> /etc/profile.d/* #/etc/profile 利用for循環調用 /etc/prefile.d/*
登入賬號時$home/.profile >> $home/.bashrc(如果有內容的話)
這個順序我也不是太確定,書中沒有明確說,不過應該不會錯。
二、
交互式腳本,主要用於登錄賬號后,新的shell進程創建時調用,它不會再調用/etc/prefile。根據其特性:利用alisa 創建別名的時候,就可以將其寫入到$home/.bashrc,因為你每次啟動終端模擬包或者shell的時候,總會去調用它。
其配置文件的關鍵詞為bashrc,它有以下幾個關鍵配置文件:
$home/.bashrc ;/etc/bashrc
$home/.bashrc 此腳本會調用/etc/bashrc,而/etc/bashrc又會調用/etc/profile.d/
說明:/etc/bashrc隸屬於/etc,不用說,肯定是任何賬戶都必須要讀取的
讀取順序$home/.bashrc >> /etc/bashrc >> /etc/profile.d/*
圖示:

三、
非交互式腳本,主要用於系統執行shell腳本時調用。
linux有一個全局環境變量BASH_ENV,此環境變量的作用就是為了讓非交互式腳本實現其價值,但默認此變量沒有設置。
你可以用BASH_ENV=***來給它點活干干。當然要想長期使用,還得加到./bashrc。
