Linux配置文件的生效順序:profile、bashrc等


環境變量初始化與對應文件的生效順序

在登錄Linux系統並啟動一個 bash shell 時,默認情況下 bash 會在若干個文件中查找環境變量的設置,這些文件可統稱為系統環境文件,bash 檢查的環境變量文件的情況取決於系統運行 Shell 的方式,系統運行 Shell 的方式有 3 種。

(1)通過系統用戶登錄后默認運行的 Shell

(2)非登錄交互式運行 Shell

(3)執行腳本運行非交互是 Shell

1、登錄shell方式進入Linux

賬號和密碼——>/etc/profile(全局文件G1)——>/etc/profile.d/(全局腳本目錄F1)——> ~/.bash_profile(用戶文件U1)——> ~/.bashrc(用戶文件U2)——>/etc/bashrc(全局文件G2)

當用戶登錄 Linux 系統時,Shell 會作為登錄 Shell 啟動,此時的登錄 Shell 加載環境變量的順序如上圖。

用戶登錄系統后首先會加載 /etc/profile 全局環境變量文件,這是 Linux 系統上默認的 Shell 主環境變量文件,系統上每個用戶登錄都會加載這個文件。

當加載完 /etc/profile 文件后,才會執行 /etc/profile.d/目錄下的腳本文件,這個目錄下的腳本文件由很多,例如:系統的字符集設置(/etc/sysconfig/i18n)等,以便用戶登錄后即可運行腳本

之后開始運行 ~/.bash_profile(用戶環境變量文件),在這個文件中,又會去找  ~/.bashrc(用戶環境變量文件),如果有,則執行,如果沒有,則不執行,在  ~/.bashrc文件中又會去找/etc/bashrc(全局環境變量文件),如果有,則執行,如果沒有,則不執行。

2、非登錄Shell方式進入Linux

不需要輸入密碼的登錄及遠程 SSH 連接——>  ~/.bashrc(用戶文件U2)——>/etc/bashrc(全局文件G2)

如果用戶的Shell 不是登錄時啟動的(比如手動敲下 bash 時啟動或者其他不需要輸入密碼的登錄及遠程 SSH 連接情況)那么這種非登錄 Shell 只會加載  ~/.bashrc(用戶環境變量文件),並會去找 /etc/bashrc(全局環境變量文件),因此如果希望在非登錄 Shell 下也可讀到設置的環境變量等內容,就需要將變量設定寫入  ~/.bashrc 或者 /etc/bashrc,而不是  ~/.bash_profile/etc/profile

 參考:

https://www.cnblogs.com/liuhedong/p/10356411.html

https://blog.csdn.net/abc_12366/article/details/87552848

https://blog.csdn.net/gshzh00/article/details/90286458

1、/etc/profile:系統配置文件,用戶登錄時讀取一次
2、/etc/bash.bashrc:(Ubuntu)系統配置文件,用戶登錄時讀取一次,每次打開一個新終端會話時讀取一次。
/etc/bashrc: (Centos)系統配置文件,用戶登錄時讀取一次,每次打開一個新終端會話時讀取一次。
3、~/.profile(~/.bash_profile、~/.bash_login):用戶配置文件,用戶登錄時讀取一次
4、~/.bashrc:用戶配置文件,用戶登錄時讀取一次,每次打開一個新終端會話時讀取一次

對於 ~/.bash_profile、~/.bash_login、~/.profile,如果終端綁定的是 bash,則按照我書寫的順序進行讀取(如果存在,就不繼續讀取)

1、系統配置文件作用於全局,而用戶配置文件僅針對當前登錄的用戶
2、先讀取系統配置文件,再讀取用戶配置文件,用戶配置文件的變量和表達式等都繼承自系統配置文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM