将eval $(pyenv init - )从zsh移动到xonsh

问题描述:

我该如何将eval "$(pyenv init -)"移动到.zshrc.xonshrcxonsh这样做的语法是什么?

+0

您应该发布一些上下文,例如添加包含该行的.bashrc的片段。 这似乎不是一个无处不在的设置。 –

pyenv(目前)只支持符合POSIX的shell(如bashzsh)以及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的语法。

-

对于pyenvxonsh工作那就要输出xonsh兼容的变量和函数定义。据我所见,你至少需要编辑文件libexec/pyenv-initlibexec/pyenv-sh-shell(可能还有一些插件)。