我怎样才能把eval "$(pyenv init -)"
它.zshrc
移到.xonshrc
?这样做的语法是xonsh
什么?
问问题
1396 次
2 回答
1
pyenv init -
生成一些可以获取的 bash 代码。xonsh 有办法获取 bash 代码:source-bash
. 不幸的是,source-bash
只接受一个文件作为参数;它不消耗标准输入。不过,解决方案相当简单:
pyenv init - > /tmp/pyenv
source-bash /tmp/pyenv > /dev/null
于 2018-04-21T20:16:01.967 回答
1
pyenv
(目前)仅支持符合 POSIX 的 shell(如bash
or zsh
)以及fish
shell。pyenv
不仅仅是一个包装器python
,它还集成到正在运行的 shell 会话中,以便透明地提供所需的 virtualenv。
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
shell 中运行,pyenv init -
则返回执行相同操作但使用fish
's 语法的代码。
-
要pyenv
使用xonsh
它必须输出xonsh
兼容的变量和函数定义。据我所知,您至少必须为此编辑文件libexec/pyenv-init
和libexec/pyenv-sh-shell
(可能还有一些插件)。
于 2017-05-31T07:31:48.287 回答