我必须将环境变量传递给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
。
答案 0 :(得分:3)
由于您使用了双引号变量扩展"$TEST"
,因此扩展在sudo
命令运行之前发生,因此echo
看到参数为空变量扩展已经导致空字符串。
您可以在此处使用shell:
% sudo TEST=MY_TEST sh -c 'echo "$TEST"'
MY_TEST