Linux的環境變數配置在/etc/profile或/etc/profile.d/*.sh文件中的區別是什麼?
@
Linux的環境變數可在多個文件中配置,如/etc/profile,/etc/profile.d/*.sh,~/.bashrc
等,下面說明上述幾個文件之間的關係和區別。
bash的運行模式可分為login shell和non-login shell。
login shell
- 例如,我們通過終端,輸入用戶名、密碼,登錄系統之後,得到就是一個login shell。
non-login shell
- 而當我們執行以下命令ssh hadoop103 command,在hadoop103執行command的就是一個non-login shell。
它們的區別
- 這兩種shell的主要區別在於,它們啟動時會載入不同的配置文件。
- login shell啟動時會載入
/etc/profile
。 - non-login shell啟動時會載入
~/.bashrc
。 - 但是無論在載入
~/.bashrc
(實際上是載入了~/.bashrc中的/etc/bashrc)或/etc/profile
時,都會執行如下程式碼片段:
- 所以,無論在login shell或non-login shell環境中,都會載入
/etc/profile.d/*.sh
文件,這樣我們為什麼不自定義一個my_env.sh
文件用來存放java或者其他的環境變數,一勞永逸!