2017-04-03 23 views
0

Shell out from ruby while setting an environment variableに関するフォローアップの質問があります。私は環境変数をsudoを介してシェルスクリプトに送り込みますが、成功しません。Ruby:環境変数をsudoスクリプトに渡しますか?

これは、サンプルの1行のスクリプト "/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 

感謝。

+0

を必要としています。 'wrapper.sh'は' sudo'の即時シェルと同じプロセスで実行されていません。 'ENV ['MYVAR'] = 42'を実行する前に正しく伝播していますか? – tadman

答えて

1

私はそれがサブシェルに影響を与えますのでexport` `として変数フラグへの道があるかどうかわからないの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 
>> 
+0

素晴らしい、ありがとう! – user180574

関連する問題