source不起作用?
1. 一次寫自動(dòng)化安裝腳本,要安裝java,需要將JAVA_HOME寫到/etc/profile中,然后使用source命令,但是發(fā)現(xiàn)profile文件中確實(shí)有JAVA_HOME,使用echo $JAVA_HOME無(wú)輸出值。手工source一下后發(fā)現(xiàn)可以輸出$JAVA_HOME
問(wèn)題原因
1. 使用bash來(lái)調(diào)用腳本,而不是使用source或者.來(lái)調(diào)用腳本。導(dǎo)致了這個(gè)問(wèn)題
2. 當(dāng)我們使用source或者.調(diào)用腳本時(shí),實(shí)際上是叫腳本放到當(dāng)前環(huán)境中,對(duì)當(dāng)前環(huán)境生效。實(shí)際上source和.是等值的。
3. 使用bash來(lái)調(diào)用腳本時(shí),會(huì)啟動(dòng)一個(gè)自shell來(lái)啟動(dòng)腳本,這是的source /etc/profile只是對(duì)子shell有用,一旦退出子shell,便沒(méi)有效果了。
所以如果在腳本中有source命令,并且想讓該命令在退出腳本后依舊生效,建議使用使用source 腳本名來(lái)調(diào)用腳本。