首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将eval $(pyenv init -)从zsh移动到xonsh

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

Stack Overflow用户
提问于 2017-05-26 00:28:49
回答 2查看 1.3K关注 0票数 2

如何将.zshrc中的eval "$(pyenv init -)"迁移到.xonshrc?在xonsh中执行此操作的语法是什么?

EN

回答 2

Stack Overflow用户

发布于 2017-05-31 15:31:48

目前,pyenv只支持兼容POSIX的shell (如bashzsh)以及fish shell。pyenv不仅仅是python的包装器,它将自己集成到正在运行的shell会话中,以便透明地提供所需的虚拟环境。

代码语言:javascript
复制
eval "$(pyenv init -)"

获取pyenv init -的输出,并在运行的shell上下文中运行(计算)它,就好像输出是写入其中的,而不是eval命令。

看一下pyenv init -的输出,您可以看到它是一小段shell代码,其中定义了pyenv函数。

代码语言:javascript
复制
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的语法。

-

为了让pyenvxonsh一起工作,它必须输出xonsh、-compatible、变量和函数定义。据我所知,您至少必须为此编辑文件libexec/pyenv-initlibexec/pyenv-sh-shell (可能还有一些插件)。

票数 1
EN

Stack Overflow用户

发布于 2018-04-22 04:16:02

pyenv init -会生成一些可以获得源代码的bash代码。xonsh提供了一种方法来获取bash代码:source-bash。不幸的是,source-bash只接受文件作为参数;它不使用STDIN。不过,解决方案相当简单:

代码语言:javascript
复制
pyenv init - > /tmp/pyenv
source-bash /tmp/pyenv > /dev/null
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44185443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档