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
>>
我有一个关于 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
>>