Her*_*ner 6 bash shell sudo environment-variables
我必须将环境变量传递给sudo,但我没有成功并且无法理解如何让它工作:
$sudo TEST=MY_TEST --user=myuser --login echo "$TEST"
$
Run Code Online (Sandbox Code Playgroud)
输出为空,但export向我显示以下内容:
$sudo TEST=MY_TEST --user=myuser --login export
...
declare -x TEST="MY_TEST"
...
Run Code Online (Sandbox Code Playgroud)
不应在调用 shell 中声明环境变量。它应该在本地声明并直接传递给sudo命令。有人可以帮助我将环境变量传递给sudo而不export在调用 shell 中使用吗?
由于您使用了双引号变量扩展,"$TEST",扩展发生在sudo命令运行之前,所以echo将参数视为空,因为变量扩展已经导致空字符串。
您可以在此处利用 shell:
% sudo TEST=MY_TEST sh -c 'echo "$TEST"'
MY_TEST
Run Code Online (Sandbox Code Playgroud)