2013-04-21 231 views

回答

6

您應該能夠設置在Ruby的ENV哈希變量調用子shell:

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

應該返回「富」。

有關更多信息,請參閱ENV[]=文檔。


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

這是工作,我正要說同樣的事情,並做了一個快速檢查,以確保。 – 2013-04-21 04:30:58

+0

的確,謝謝! – akonsu 2013-04-21 04:31:16

+0

作爲一個特別但不好的情況,請注意您的平臺可能會在啓動子shell之前刪除一些環境變量。例如,[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 2017-02-28 11:18:56

1

您可以使用Process.spawn設置環境:前

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

感謝。我需要在'git'後面運行更多的命令,我可以避免將它們放到'.sh'文件中嗎?可以這麼說,我希望寫一個紅寶石外殼腳本。 – akonsu 2013-04-21 04:27:14

+0

啊,從你說的話的方式來看,我認爲你的確意思是隻爲一個shell命令重寫一個變量。 – 2013-04-21 04:35:03