(1)/etc/profile 登入時,會執行。
全域(公有)配置,不管是哪個使用者,登入時都會讀取該檔案。
(2)/ect/bashrc Ubuntu沒有此檔案,與之對應的是/ect/bash.bashrc
bash.bashrc 是互動式shell的初始設定檔案。
(3)~/.profile 某個使用者讀取的配置。
若bash是以login方式執行時,讀取~/.bash_profile,若它不存在,則讀取~ /.bash_login,若前兩者不存在,讀取~ /.profile。
另外,圖形模式登入時,此檔案將被讀取,即使存在~/.bash_profile和~/.bash_login。
(4)~/.bash_login
若 bash是以login方式執行時,讀取~/.bash_profile,若它不存在,則讀取~/.bash_login,若前兩者不存在,讀取~ /.profile。
(5)~/.bash_profile Unbutu預設沒有此檔案,可建立。
只有 bash是以login形式執行時,才會讀取此檔案。通常該設定檔還會配置成去讀取~/.bashrc。
(6)~/.bashrc 該檔案包含專用於某個使用者的bash shell的bash資訊,當該使用者登入時以及每次開啟新的shell時,該檔案被讀取.
當 bash是以non-login形式執行時,讀取此檔案。若是以login形式執行,則不會讀取此檔案。
(7)~/.bash_logout
登出時,且是longin形式,此檔案才會讀取。也就是說,在文字模式登出時,此檔案會被讀取,圖形模式登出時,此檔案不會被讀取。
補
充一點,/etc/rc.local是系統shell會執行的檔案,linux啟動後會退出的;/etc/profile 或
/etc/bash.bashrc是使用者shell會的配置,我們一般的Shell是使用者Shell的子進程,而非系統shell的子進程,所以如果在
/etc/rc.local中指定"alias ll='ls -a'"這樣的別名,對登入系統後的shell是沒用的。
某網友總結如下:
/etc/profile,/etc /bashrc 是系統全域環境變數設定
/etc/profile與/etc/bashrc的區別?
前一個主要用來設定一些系統變數,比如JAVA_HOME等等,後面一個主要用來儲存一些bash的設定.
~/.profile,~ /.bashrc使用者家目錄下的私人環境變數設定
當登入系統時候獲得一個shell進程時,其讀取環境設定檔有三步
1 首先讀入的是全域環境變數設定檔/etc/profile,然後根據其內容讀取額外的設定的文檔,如
/etc/profile.d和 /etc/inputrc
2 然後根據不同使用者帳號,去其家目錄讀取~/.bash_profile,如果這讀取不了就讀取~/.bash_login,這個也讀取不了才會讀取
~/.profile,這三個文檔設定基本上是一樣的,讀取有優先關係
3 然後在根據使用者帳號讀取~/.bashrc
至於~/.profile與~/.bashrc的區別,都具有個人化定製功能
~/.profile可以設定本使用者專有的路徑,環境變數,等,它只能登入的時候執行一次
~/.bashrc也是某使用者專有設定文檔,可以設定路徑,命令別名,每次shell script的執行都會使用它一次
下面是幾個例子:
1. 圖形模式登入時,順序讀取:/etc/profile和~/.profile
2. 圖形模式登入後,開啟終端時,順序讀取:/etc/bash.bashrc和~/.bashrc
3. 文字模式登入時,順序讀取:/etc/bash.bashrc,/etc/profile和~/.bash_profile
4. 從其它使用者su到該使用者,則分兩種情況:
(1)如果帶-l參數(或-參數,--login參數),如:su -l username,則bash是lonin的,它將順序讀取以下設定檔:/etc/bash.bashrc,/etc/profile和~ /.bash_profile。
(2)如果沒有帶-l參數,則bash是non-login的,它將順序讀取:/etc/bash.bashrc和~/.bashrc
5. 登出時,或退出su登入的使用者,如果是longin方式,那麼bash會讀取:~/.bash_logout
6.
執行自訂的shell檔案時,若使用“bash -l
a.sh”的方式,則bash會讀取行:/etc/profile和~/.bash_profile,若使用其它方式,如:bash a.sh,
./a.sh,sh a.sh(這個不屬於bash shell),則不會讀取上面的任何檔案。
7. 上面的例子凡是讀取到~/.bash_profile的,若該檔案不存在,則讀取~/.bash_login,若前兩者不存在,讀取~ /.profile。