gpt4 book ai didi

linux - 防止子进程继承父环境

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:54 25 4
gpt4 key购买 nike

我有以下 2 个场景,命令 doSomething 在后台运行并使用环境变量 VAR。我已经为 ~/.bash_profile 中的变量分配了正确的值。

1) 当使用 $doSomething & 从 bash 提示符运行时:由于使用了正确的 VAR 值,一切正常。

2) 当从 shell 脚本内部运行时:shell 脚本本身已作为进程循环的一部分被调用,该循环已更改 VAR 的值并已导出。当我在 shell 脚本中调用 $doSomething & 时,它使用 VAR 的新值并失败。这是有道理的,因为命令继承了脚本的环境。有没有一种方法可以调用命令,使其使用 bash_profile 中的值?

似乎一种选择是使用 env -u 取消设置更改的值并重新分配 bash_profile 中的值。有没有更好的办法?

谢谢!

最佳答案

我建议将变量定义放到一个单独的文件中,比如:

var.sh

export VAR="value"

然后从您的 .bashrc 和您的脚本中获取该文件:

source /path/to/var.sh

将变量定义放入一个单独的文件中的好处是您不需要从脚本内部获取整个 .bashrc,这可能会导致不必要的副作用。

关于linux - 防止子进程继承父环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33231816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com