2013-04-21 2 views

답변

6

당신은 루비의 ENV 해시에서 변수를 설정 할 수 있어야한다을 :

ENV['GIT_WORK_TREE'] = 'foo' 
`echo $GIT_WORK_TREE` 

은 "반환해야 foo ".

자세한 내용은 ENV[]= 설명서를 참조하십시오.


 
[1] (pry) main: 0> ENV['GIT_WORK_TREE'] = 'foo' 
"foo" 
[2] (pry) main: 0> `echo $GIT_WORK_TREE` 
"foo\n" 
+0

이것도 효과가 있으며, 나는 똑같은 것을 말하려고하고 빠른 확인을했습니다. 실제로 –

+0

, 감사합니다! – akonsu

+0

특히 귀찮은 경우로서 플랫폼이 하위 셸을 시작하기 전에 일부 환경 변수를 제거 할 수 있습니다. 예를 들어, [macOS는 DYLD_ * env vars를 삭제할 때 삭제됩니다] (https://apple.stackexchange.com/questions/212945/unable-to-set-dyld-fallback-library-path-in-shell-on-osx- 10-11-1). – hmijail

1

당신은 환경 설정 Process.spawn를 사용할 수 있습니다 서브 쉘을 호출하기 전에

spawn({'GIT_WORK_TREE' => '/foo/bar'}, "git checkout -f") 
+0

감사합니다. 'git' 이후에 명령을 몇개 더 실행할 필요가 있습니다. 그들을'.sh' 파일에 넣는 것을 피할 수 있습니까? 나는 루비 셸 스크립트를 쓰려고했다. – akonsu

+0

아, 당신이 표현한 방식에서, 나는 단지 하나의 쉘 명령에 대해 하나의 변수를 오버라이드하는 것을 의미한다고 생각했습니다. –

관련 문제