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



我可以更改condabaseenv中的HOSTenv变量(如下所示)

然而,我无法在其他conda-env中更改它,在我的情况下,它是fooenv

~ ❯ 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-envfoozsh中)?

解决方法

一种变通方法是将命令链接起来:

~ ❯ HOST=localhost && echo $HOST
localhost

这并不能解决你不能保持价值的问题,但至少你可以根据自己的意愿来启动它。

问题来源

我不熟悉zsh的细节,但Conda环境的这种特定行为似乎是由gcc_linux-64包引起的,该包在其激活脚本中包括以下行:

# 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权限,然后在再次显示提示之前从备份权限恢复它。

我鼓励你就相关原料提出问题,询问他们为什么这样做,以及是否可以改变。

相关内容

  • 没有找到相关文章

最新更新