問題描述
1. 一次寫自動化安裝腳本,要安裝java,需要將JAVA_HOME寫到/etc/profile中,然后使用source命令,但是發現profile文件中確實有JAVA_HOME,使用echo $JAVA_HOME無輸出值。手工source一下后發現可以輸出$JAVA_HOME
問題原因
1. 使用bash來調用腳本,而不是使用source或者.來調用腳本。導致了這個問題
2. 當我們使用source或者.調用腳本時,實際上是叫腳本放到當前環境中,對當前環境生效。實際上source和.是等值的。
3. 使用bash來調用腳本時,會啟動一個自shell來啟動腳本,這是的source /etc/profile只是對子shell有用,一旦退出子shell,便沒有效果了。
所以如果在腳本中有source命令,並且想讓該命令在退出腳本后依舊生效,建議使用使用source 腳本名來調用腳本。