无法在 conda env 中更改 HOST env 变量

Can't change HOST env variable in conda env

我可以在 conda 中更改 HOST env 变量 base env (如下图)

但是,我无法在其他 conda env 中更改它,在我的情况下,它是 foo env

~ ❯ echo $HOST                                           base
localhost
~ ❯ HOST=bar                                             base
~ ❯ echo $HOST                                           base
bar
~ ❯ conda activate foo                                   base
~ ❯ echo $HOST                                           foo
x86_64-conda-linux-gnu
~ ❯ HOST=bar                                             foo
~ ❯ echo $HOST                                           foo
x86_64-conda-linux-gnu

我也试过 export 但没有成功:

~ ❯ export HOST=bar                                      foo
~ ❯ echo $HOST                                           foo
x86_64-conda-linux-gnu

我想更改 HOST 变量以跟随

我正在使用 zsh,但是当我更改为 bash 时,一切正常 .

那么如何更改 HOST 变量(在 conda env foozsh)?

解决方法

解决方法是链接命令:

~ ❯ HOST=localhost && echo $HOST
localhost

这并不能解决您无法保留该值的问题,但至少您可以根据需要启动带有它定义的内容。

问题来源

我不熟悉 zsh 的细节,但 Conda 环境的这种特定行为似乎是由 gcc_linux-64 包引起的,其中包括 these lines in its activation script:

# fix prompt for zsh
if [[ -n "${ZSH_NAME:-}" ]]; then
    autoload -Uz add-zsh-hook

    _conda_clang_precmd() {
      HOST="${CONDA_BACKUP_HOST}"
    }
    add-zsh-hook -Uz precmd _conda_clang_precmd

    _conda_clang_preexec() {
      HOST="${CONDA_TOOLCHAIN_HOST}"
    }
    add-zsh-hook -Uz preexec _conda_clang_preexec
fi

粗略地说,这个编译器工具链似乎需要以特定方式设置 HOST,并且由于某些原因 zsh 使得更改它有问题。此处的代码似乎使用挂钩在 执行命令之前 设置 HOST,然后在再次显示提示之前从备份中恢复它。

我鼓励您提交 an issue on the pertinent feedstock,询问他们为什么这样做以及是否可以更改。