我可以更改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权限,然后在再次显示提示之前从备份权限恢复它。
我鼓励你就相关原料提出问题,询问他们为什么这样做,以及是否可以改变。