将环境变量传递给sudo

时间:2016-11-16 05:51:47

标签: bash shell environment-variables sudo

我必须将环境变量传递给sudo,但我没有成功,也无法理解如何使其工作:

$sudo TEST=MY_TEST --user=myuser --login echo "$TEST"
$

输出为空,但export向我显示以下内容:

$sudo TEST=MY_TEST --user=myuser --login export
...
declare -x TEST="MY_TEST"
...

不应在调用shell中声明环境变量。它应该在本地声明并直接传递给sudo命令。 有人可以帮助我将环境变量传递给sudo而不在调用shell中使用export

1 个答案:

答案 0 :(得分:3)

由于您使用了双引号变量扩展"$TEST",因此扩展在sudo命令运行之前发生,因此echo看到参数为空变量扩展已经导致空字符串。

您可以在此处使用shell:

% sudo TEST=MY_TEST sh -c 'echo "$TEST"'              
MY_TEST
相关问题