問題描述
- 在Ubuntu 18.04.1 LTS中配置JAVA環境,每次重新打開命令行都要重新source profile
解決辦法
- 把export語句寫在~/.bashrc文件里,或者在該文件里寫上source /etc/profile
原因分析與記錄
- bashrc是在系統啟動后就會自動運行
- profile是在用戶登錄后才會運行
- /etc/profile中設定的變量(全局)的可以作用于任何用戶,而~/.bashrc等中設定的變量(局部)只能繼承/etc/profile中的變量
延伸:login shell 與 non-login shell
- non-login shell:登錄終端不需要密碼,例如直接在ubunt當前用戶中打開的終端。這種情況shell不會讀取/etc/profile和/.bash_profile,而是讀取/.bashrc來應用新的環境變量。
- login shell:需要輸入密碼登錄的shell,例如通過 su 用戶名 登錄的shell。此種方式登錄時,shell會重新讀取/etc/profile和~/.bash_profile來應用新的環境變量。
- 識別非login的shell方法還是運行#echo $0命令,得到的結果假設沒有'-'前綴。即為非login的
注意
- non-login shell 啟動的腳本不會入/etc/profile中的命令,所以在在/etc/profile中設置的某些命令不會生效,可能會導致一些問題,需要格外注意。