1. 程式人生 > >一文徹底搞懂linux全域性環境變數生效順序

一文徹底搞懂linux全域性環境變數生效順序

一、前言
在登入linux系統並啟動一個bash shell時,預設情況下bash會在若干個檔案中查詢環境變數的設定。這些檔案可統稱為系統環境檔案。
⭐️bash檢查環境變數檔案的情況取決於系統執行shell的方式

二、系統執行Shell的方式
1、通過系統使用者登陸後預設執行的shell
2、非登入互動式執行shell
3、執行指令碼執行非互動式shell

三、啟動順序示意圖以及知識點說明
一文徹底搞懂linux全域性環境變數生效順序

第一種(通過系統使用者登陸):
1)當用戶登入系統後,首先載入/etc/profile全域性環境變數(這也是linux預設的shell主環境變數,每個使用者登入都會載入這個檔案)
2)接著載入/etc/profile.d/目錄下的指令碼檔案,自動定義開機啟動的指令碼可以放在這個目錄下
3)緊接著載入$HOME/.bash_profile(這是使用者個人的環境變數檔案)
4)在$HOME/.bash_profile檔案中,會載入$HOME/.bashrc(也是使用者個人的環境變數檔案,包含在$HOME/.bash_profile中),如果有環境變數就載入,如果沒有就不載入
5)在$HOME/.bashrc檔案中,又會載入/etc/bashrc(這是全域性環境變數),同理,有環境變數就載入,沒有就不載入

第二種(使用者的shell不是登入時啟動的)
比如說:手動在終端執行“bash”命令,又或者不需要輸入密碼的登入以及遠端SSH連線情況
⭐️這樣的方式,只會載入$HOME/.bashrc(使用者個人的環境變數檔案),緊接著去載入/etc/bashrc(全域性環境變數檔案)
因此,如果希望在非登入Shell下也可以讀取到設定的環境變數,就需要把變數設定在$HOME/.bashrc(如果想僅僅個人生效,設定在這個檔案)或者/etc/bashrc(如果想全部的使用者都能生效,設定在這個檔案)

四、終結
使用者環境變數配置在:$HOME/.bashrc檔案中
全域性環境變數配置在:/etc/bashrc檔案中
不管使用者還是全域性的環境變數,建議不要放在$HOME/.bash_profile和/etc/profile中

五、我是大表哥,我為自己帶鹽,以後會不定時更新指令碼,請支援正版,盜鏈可恥,
我的部落格是:http://blog.51cto.com
各位朋友有什麼不懂以及認為有什麼錯誤之處,請在下方留言,謝謝!