2
我有以下兩種方案,其中的命令doSomething
在後臺運行並使用env變量VAR。我已經爲〜/ .bash_profile中的變量分配了正確的值。防止繼承父級環境的子進程
1)當從bash提示符運行$doSomething &
:事情工作正常,因爲使用了正確的VAR值。
2)當從shell腳本內部運行時:shell腳本本身作爲改變VAR值和導出的進程週期的一部分被調用。當我在shell腳本中調用$doSomething &
時,它使用VAR的新值並失敗。這是有道理的,因爲命令會繼承腳本的環境。有沒有一種方法可以調用該命令,以便使用bash_profile中的值?
看來,一個選項可能是使用env -u
來取消更改的值並重新分配bash_profile中的值。有沒有更好的辦法?
謝謝!
不,這就是它工作的方式。 – Sobrique
爲什麼不在你的子腳本中使用'source〜/ .bash_profile' ..? – n00dl3
使用'env'或在運行命令時顯式指定變量(即:'LC_ALL = C OtherVar = foo doSomething&')。 – bufh