linux 環境變數的配置

來源:互聯網
上載者:User

(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。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

Tags Index: