需要为back-ticks命令设置环境var

时间:2013-04-21 03:56:52

标签: ruby shell scripting

如何将环境变量传递给我使用Kernel#system et al?

执行的shell命令

说,我想跑

%x{git checkout -f}

但此命令依赖于环境变量$GIT_WORK_TREE。我该怎么设置呢?

2 个答案:

答案 0 :(得分:7)

在调用子shell之前,您应该能够在Ruby的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"

答案 1 :(得分:1)

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

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