Julia如何使用shell命令设置环境变量?

3

当我在REPL中尝试像这样在shell命令中设置环境变量:

;SOME_ENV="foo" some_command

I get an error:

zsh:1: command not found: SOME_ENV=foo

如何为单个命令设置环境变量?
1个回答

5

一种解决方法是使用withenv()

julia> withenv("SOME_ENV"=>"foo") do
           run(`some_command`)
       end

另外,您也可以使用setenv(),但它会完全替换环境,而不像withenv()一样只是修改它。特别是,您会失去PATH环境变量,因此需要指定命令的完整路径:

julia> run(setenv(`/path/to/some_command`, "FOO"=>"BAR"))

或者你可以将 PATH 变量复制到新环境中:

julia> run(setenv(`some_command`, "FOO"=>"BAR", "PATH"=>ENV["PATH"]))

更多细节请参阅 withenv()setenv() 的文档。


2
此外,你可以使用必要的环境创建Cmd,并运行它。为了保留现有环境,复制它是有用的:env = copy(ENV); env["FOO"] = "BAR",然后在程序中传递它。 - Andrej Oskin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接