我有以下2个场景,命令doSomething
在后台运行并使用env变量VAR。我在〜/ .bash_profile中为变量分配了正确的值。
1)当使用$doSomething &
从bash提示符运行时:由于使用了正确的VAR值,因此工作正常。
2)从shell脚本内部运行时:shell脚本本身已作为已更改VAR值并导出的进程周期的一部分被调用。当我在shell脚本中调用$doSomething &
时,它使用VAR的新值并失败。这是有道理的,因为该命令继承了脚本的环境。有没有办法可以调用命令,以便它使用bash_profile中的值?
似乎有一个选项可能是使用env -u
取消设置更改的值并重新分配bash_profile中的值。还有更好的方法吗?
谢谢!
答案 0 :(得分:0)
我建议将变量定义放在一个单独的文件中,例如:
var.sh
export VAR="value"
然后从.bashrc
和脚本中找到该文件表格:
source /path/to/var.sh
将变量定义放入单独的文件中的优势在于,您不需要从脚本中获取整个.bashrc
,这可能会导致不必要的副作用。