Linux中環境變數到底寫在哪個檔案中?解析login shell 和 no-login shell
non-login shell:取得bash介面的方法不需要重複登入的動作。
舉兩個例子 (1)以X window登入linux後,再以X 的圖形化介面啟動終端機,此時那個終端機並不需要再次的輸入使用者名稱和密碼,那個bash的環境就稱為non-login shell
(2)在原本的bash環境中再次下達bash這個指令,同樣沒有要求輸入使用者名稱和密碼,那個第二個bash也是non-login shell login shell 和 no-login shell 的執行順序: Login shells:
/etc/profile
/etc/profile.d
~/.bash_profile
~/.bashrc
/etc/bashrc
Non-login shells:
~/.bashrc
/etc/bashrc
/etc/profile.d
注意:
/etc/profile:整個系統的環境 放在~裡的是個人設定,一般放在~/.bashrc 如果想執行當前目錄的指令碼,有2種方法: 可以執行./script.sh (需要有可執行許可權)
(1)使bash新生成一個子bash來執行,例如:./script.sh (需要有可執行許可權)。在此情況下, 指令碼對環境變數的更改只對子bash有效. (2) 可使用source命令來直接執行指令碼(可用'.'來代替source). 它與上面的方法有兩點區別:
1, 指令碼檔案不需要執行許可權.
2, 就在當前bash中執行, bash不會新fork一個子bash來執行它, 所以指令碼對環境變數的更改會影響到當前bash. 所以當希望使修改的環境變數生效,用source即可。