如何将.zshrc中的eval "$(pyenv init -)"迁移到.xonshrc?在xonsh中执行此操作的语法是什么?
发布于 2017-05-31 15:31:48
目前,pyenv只支持兼容POSIX的shell (如bash或zsh)以及fish shell。pyenv不仅仅是python的包装器,它将自己集成到正在运行的shell会话中,以便透明地提供所需的虚拟环境。
eval "$(pyenv init -)"获取pyenv init -的输出,并在运行的shell上下文中运行(计算)它,就好像输出是写入其中的,而不是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" "$@")";;
*)
command pyenv "$command" "$@";;
esac
}如果在fish外壳中运行,pyenv init -将返回执行相同操作的代码,但使用的是fish的语法。
-
为了让pyenv与xonsh一起工作,它必须输出xonsh、-compatible、变量和函数定义。据我所知,您至少必须为此编辑文件libexec/pyenv-init和libexec/pyenv-sh-shell (可能还有一些插件)。
发布于 2018-04-22 04:16:02
pyenv init -会生成一些可以获得源代码的bash代码。xonsh提供了一种方法来获取bash代码:source-bash。不幸的是,source-bash只接受文件作为参数;它不使用STDIN。不过,解决方案相当简单:
pyenv init - > /tmp/pyenv
source-bash /tmp/pyenv > /dev/nullhttps://stackoverflow.com/questions/44185443
复制相似问题