当我在REPL中尝试像这样在shell命令中设置环境变量:
;SOME_ENV="foo" some_command
I get an error:
zsh:1: command not found: SOME_ENV=foo
如何为单个命令设置环境变量?
当我在REPL中尝试像这样在shell命令中设置环境变量:
;SOME_ENV="foo" some_command
I get an error:
zsh:1: command not found: SOME_ENV=foo
一种解决方法是使用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"]))
Cmd
,并运行它。为了保留现有环境,复制它是有用的:env = copy(ENV); env["FOO"] = "BAR"
,然后在程序中传递它。 - Andrej Oskin