6

如何将环境变量传递给我使用Kernel#systemet al 执行的 shell 命令?

说,我想跑

%x{git checkout -f}

但是这个命令依赖于环境变量$GIT_WORK_TREE。我该如何设置?

4

2 回答 2

9

您应该能够在ENV调用子 shell 之前在 Ruby 的哈希中设置变量:

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

应该返回“foo”。

有关更多信息,请参阅ENV[]=文档。


[1](撬)主要:0> ENV['GIT_WORK_TREE'] = 'foo'
“富”
[2] (pry) main: 0> `echo $GIT_WORK_TREE`
“富\n”
于 2013-04-21T04:29:27.090 回答
1

您可以使用Process.spawn设置环境:

spawn({'GIT_WORK_TREE' => '/foo/bar'}, "git checkout -f")
于 2013-04-21T04:18:06.800 回答