Ruby: 将环境变量传递给 sudo 脚本?

Ruby: pass environment variable to sudo script?

我有一个关于 Shell out from ruby while setting an environment variable 的后续问题。我尝试通过 sudo 将环境变量提供给 shell 脚本,但没有成功。

这是示例单行脚本,“/usr/bin/wrapper.sh”。

echo $MYVAR

测试,

$ irb
> system({'MYVAR' => "42"}, "echo $MYVAR")        ==> GOOD
> system({'MYVAR' => "42"}, "wrapper.sh")         ==> GOOD
> system({'MYVAR' => "42"}, "sudo echo $MYVAR")   ==> GOOD
> system({'MYVAR' => "42"}, "sudo wrapper.sh")    ==> NOT GOOD

感谢您的帮助。

你需要 sudo -E

$ irb
>> system({'MYVAR' => "42"}, "sudo wrapper.sh")
=> true
>> system({'MYVAR' => "42"}, "wrapper.sh")
42
=> true
>> system({'MYVAR' => "42"}, "sudo -E wrapper.sh")
42
=> true
>>