/etc/profile:此檔案為系統的每個使用者佈建環境資訊,當使用者第一次登入時,該檔案被執行.
並從/etc/profile.d目錄的設定檔中搜集shell的設定.
/etc/bashrc:為每一個運行bash shell的使用者執行此檔案.當bash shell被開啟時,該檔案被讀取.
~/.bash_profile:每個使用者都可使用該檔案輸入專用於自己使用的shell資訊,當使用者登入時,該
檔案僅僅執行一次!預設情況下,他設定一些環境變數,執行使用者的.bashrc檔案.
~/.bashrc:該檔案包含專用於你的bash shell的bash資訊,當登入時以及每次開啟新的shell時,該
該檔案被讀取.
~/.bash_logout:當每次退出系統(退出bash shell)時,執行該檔案.
另外,/etc/profile中設定的變數(全域)的可以作用於任何使用者,而~/.bashrc等中設定的變數(局部)只能繼承/etc/profile中的變數,他們是"父子"關係.
~/.bash_profile 是互動式、login 方式進入 bash 啟動並執行
~/.bashrc 是互動式 non-login 方式進入 bash 啟動並執行
通常二者設定大致相同,所以通常前者會調用後者。
bash的幾個初始設定檔案 - [Ubuntu]
(1)/etc/profile
全域(公有)配置,不管是哪個使用者,登入時都會讀取該檔案。
(2)/ect/bashrc
Ubuntu沒有此檔案,與之對應的是/ect/bash.bashrc
它也是全域(公有)的
bash執行時,不管是何種方式,都會讀取此檔案。
(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是以non-login形式執行時,讀取此檔案。若是以login形式執行,則不會讀取此檔案。
(7)~/.bash_logout
登出時,且是longin形式,此檔案才會讀取。也就是說,在文字模式登出時,此檔案會被讀取,圖形模式登出時,此檔案不會被讀取。
下面是在原生幾個例子:
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
轉貼:http://blog.csdn.net/zhouhuiah/article/details/6429178