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或者其他的環境變數,一勞永逸!