為什麼寫這篇文章
長久以來,我一直搞不懂linux的環境變量到底應該配置在哪裡,很多時候要配置環境變量,也隻是網上一搜,随便找段指令來用,隻要能成功就覺得萬事大吉。但實際上如果不知其是以然,後面出問題了我也不知道怎麼解決,今天又遇到問題就是通過手動指令行能執行
java -jar
指令,但通過jenkins卻無法執行,一直提示找不到JDK。是以好好研究了關于環境變量的配置資訊,特此記錄,以備查閱。
bashrc與profile的差別
/etc/profile:為系統的所有使用者設定環境資訊,當使用者第一次登入時,該檔案被執行,并從
/etc/profile.d
目錄的配置檔案中搜集shell的設定。在/etc/profile中添加環境變量後,如果沒有重新開機而是使用
source /etc/profile
編譯後隻能在目前終端生效,新開終端無效;
/etc/bashrc:為系統的所有使用者設定環境資訊,當bash shell被打開時,該檔案被讀取。
~/.bash_profile:每個使用者都可使用該檔案輸入專用于自己使用的shell資訊,當使用者登入時,該檔案僅僅執行一次!預設情況下,它設定一些環境變量,然後執行使用者的.bashrc檔案。
~/.bashrc:該檔案包含專用于某個使用者的bash shell的bash資訊,當該使用者登入時以及每次打開新的shell時,該檔案被讀取。
總結
- 首先讀入的是全局環境變量設定檔
,然後根據其内容讀取額外的設定的文檔,如/etc/profile
和/etc/profile.d
/etc/inputrc
- 然後根據不同使用者,去其家目錄讀取
,如果這讀取不了就讀取~/.bash_profile
,這個也讀取不了才會讀取~/.bash_login
,這三個文檔設定基本上是一樣的,讀取有優先關系~/.profile
- 然後在根據使用者帳号讀取
,至于~/.bashrc
與~/.profile
的差別。~/.bashrc
- 都具有個性化定制功能
- ~/.profile可以設定本使用者專有的路徑,環境變量,等,它隻能登入的時候執行一次
- ~/.bashrc也是某使用者專有設定文檔,可以設定路徑,指令别名,每次shell script的執行都會使用它一次