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

Min*_*ark 3 julia

当我尝试在 REPL 中的 shell 命令中设置环境变量时,如下所示:

;SOME_ENV="foo" some_command
Run Code Online (Sandbox Code Playgroud)

我收到错误:

zsh:1: command not found: SOME_ENV=foo
Run Code Online (Sandbox Code Playgroud)

如何为各个命令设置环境变量?

Min*_*ark 5

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

julia> withenv("SOME_ENV"=>"foo") do
           run(`some_command`)
       end
Run Code Online (Sandbox Code Playgroud)

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

julia> run(setenv(`/path/to/some_command`, "FOO"=>"BAR"))
Run Code Online (Sandbox Code Playgroud)

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

julia> run(setenv(`some_command`, "FOO"=>"BAR", "PATH"=>ENV["PATH"]))
Run Code Online (Sandbox Code Playgroud)

withenv()有关更多详细信息,请参阅和 的文档setenv()

  • 另外,您可以使用必要的环境 `Cmd(\`some_command\`, env = "FOO" => "BAR")` 创建 `Cmd` 并运行它。为了保留现有环境,复制它很有用`env = copy(ENV); env["FOO"] = "BAR"` 并将其传递。 (2认同)