如何使用sudo将环境变量导出到后台进程? [重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用sudo将环境变量导出到后台进程? [重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我有一个bash脚本env_setter.sh
。它设置了一个环境变量。它包含:
#!/bin/bash
echo "inside env_setter script....."
export NAME="jake"
我有另一个脚本tester.sh
。它尝试打印由env_setter.sh
设置的环境变量的值。它包含:
#!/bin/bash
echo "Inside tester script..."
echo "$NAME"
然后我有一个脚本runner.sh
执行上述两个脚本如下:
#!/bin/bash
echo "Inside runner script..."
. ./env_setter.sh
echo "$NAME"
sudo nohup ./tester.sh > demo.log 2>&1 & echo $! > save_pid.pid
现在,当我运行runner.sh
时,我在demo.log
中得到以下输出:
inside env_setter script.....
jake
Inside tester script...
我们可以看到,tester.sh
中的最后一个echo命令不会打印任何内容。这是因为我们使用env_setter.sh
设置的环境变量未在tester.sh
的上下文中导出。
那么,在这种情况下,如何将环境变量导出到后台进程?
答案
通常,出于安全原因,sudo会将当前环境替换为新用户的环境。使用sudo -E
来保留调用环境。或者您可以在命令行sudo NAME=jake
上传递变量。
以上是关于如何使用sudo将环境变量导出到后台进程? [重复]的主要内容,如果未能解决你的问题,请参考以下文章