如何将环境变量传递给我使用Kernel#system
et al?
说,我想跑
%x{git checkout -f}
但此命令依赖于环境变量$GIT_WORK_TREE
。我该怎么设置呢?
答案 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")