2017-04-03 2 views
0

Shell out from ruby while setting an environment variable에 관한 후속 질문이 있습니다. sudo를 통해 쉘 스크립트에 환경 변수를 제공하려고 시도했지만 성공하지는 못했습니다.Ruby : 환경 변수를 sudo 스크립트에 전달 하시겠습니까?

이것은 샘플 한 줄 스크립트 "/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 

감사합니다. 이 서브 쉘을 export``등의 변수에 영향을 미치는 있도록 플래그 할 수있는 방법이 있는지

+0

이 필요합니다. 'wrapper.sh'는'sudo'의 직접 쉘과 같은 프로세스에서 실행되지 않습니다. 'ENV [ 'MYVAR'] = 42'를 제대로 실행하기 전에 실행합니까? – tadman

답변

1

당신은 잘 모르겠어요 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

관련 문제