将eval $(pyenv init - )从zsh移动到xonsh
问题描述:
我该如何将eval "$(pyenv init -)"
移动到.zshrc
到.xonshrc
? xonsh
这样做的语法是什么?
答
pyenv
(目前)只支持符合POSIX的shell(如bash
或zsh
)以及fish
shell。 pyenv
不仅仅是python
的包装,它将自身集成到正在运行的shell会话中,以便透明地提供所需的virtualenv。
eval "$(pyenv init -)"
需要的pyenv init -
和运行(求值)输出它在运行的壳的上下文中,就好像输出被写有代替eval
命令。
查看pyenv init -
的输出结果可以看出,这是一些shell代码,除其他外,它定义了pyenv
函数。
export PATH="/home/adaephon/local/opt/pyenv/shims:${PATH}"
export PYENV_SHELL=zsh
source '/home/adaephon/local/opt/pyenv/libexec/../completions/pyenv.zsh'
command pyenv rehash 2>/dev/null
pyenv() {
local command
command="$1"
if [ "$#" -gt 0 ]; then
shift
fi
case "$command" in
activate|deactivate|rehash|shell)
eval "$(pyenv "sh-$command" "[email protected]")";;
*)
command pyenv "$command" "[email protected]";;
esac
}
如果在fish
shell中运行,pyenv init -
返回代码,不会相同,但在fish
的语法。
-
对于pyenv
与xonsh
工作那就要输出xonsh
兼容的变量和函数定义。据我所见,你至少需要编辑文件libexec/pyenv-init
和libexec/pyenv-sh-shell
(可能还有一些插件)。
您应该发布一些上下文,例如添加包含该行的.bashrc的片段。 这似乎不是一个无处不在的设置。 –