Kernel#system
등을 사용하여 실행하는 쉘 명령에 환경 변수를 전달하는 방법은 무엇입니까?back-ticks 명령에 환경 변수를 설정해야합니다.
내가
%x{git checkout -f}
를 실행하려면, 말을하지만,이 명령은 환경 변수 $GIT_WORK_TREE
에 의존한다. 어떻게 설정합니까?
Kernel#system
등을 사용하여 실행하는 쉘 명령에 환경 변수를 전달하는 방법은 무엇입니까?back-ticks 명령에 환경 변수를 설정해야합니다.
내가
%x{git checkout -f}
를 실행하려면, 말을하지만,이 명령은 환경 변수 $GIT_WORK_TREE
에 의존한다. 어떻게 설정합니까?
당신은 루비의 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"
당신은 환경 설정 Process.spawn
를 사용할 수 있습니다 서브 쉘을 호출하기 전에
spawn({'GIT_WORK_TREE' => '/foo/bar'}, "git checkout -f")
감사합니다. 'git' 이후에 명령을 몇개 더 실행할 필요가 있습니다. 그들을'.sh' 파일에 넣는 것을 피할 수 있습니까? 나는 루비 셸 스크립트를 쓰려고했다. – akonsu
아, 당신이 표현한 방식에서, 나는 단지 하나의 쉘 명령에 대해 하나의 변수를 오버라이드하는 것을 의미한다고 생각했습니다. –
이것도 효과가 있으며, 나는 똑같은 것을 말하려고하고 빠른 확인을했습니다. 실제로 –
, 감사합니다! – akonsu
특히 귀찮은 경우로서 플랫폼이 하위 셸을 시작하기 전에 일부 환경 변수를 제거 할 수 있습니다. 예를 들어, [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