gpt4 book ai didi

linux - 将环境变量传递给嵌套的 child

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

我有一些正在设置的环境变量,并试图通过子进程的子进程访问它们。我正在尝试使用 shell 启动另一个进程。在我的示例中,它只是另一个使事情变得简单的 shell 脚本。

我浏览了 shell 文档,并尝试使用 -a 标志,但没有用。如果我明确地将环境变量从父级复制到子级,它将起作用。

a.sh

#!/bin/sh
# does not work here

echo $FOO

父类.sh

#!/bin/sh
export FOO=bar
sudo -H -u username nohup sh -c "echo $FOO #works here; sh ./a.sh"

但是,如果我明确地将 FOO 传递给内联 shell 脚本,它将起作用

#!/bin/sh

export FOO=bar
sudo -H -u username nohup sh -c "echo $FOO;export FOO=$FOO; sh ./a.sh"

是否有更优雅的解决方案来将 env 变量传递给嵌套的子项?

在我的实际实现代码中,我尝试使用的不是 shell 脚本,而是启动另一个依赖于 env 变量的进程,因此获取脚本是不可行的。

最佳答案

因为 sudo 在启动新进程时默认不保留环境,所以你应该明确指示它保留某个 var:

sudo FOO=100 -H -u username nohup sh -c "sh ./a.sh"
nohup: ignoring input and appending output to ‘nohup.out’
cat nohup.out
100

关于linux - 将环境变量传递给嵌套的 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57309899/

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