.bash_配置文件与.bashrc中的pyenv初始化(2.0.0版之后)

.bash_配置文件与.bashrc中的pyenv初始化(2.0.0版之后),bash,documentation,pyenv,Bash,Documentation,Pyenv,在pyenv 2.0.0的最新版本中,当前建议对bash shell进行以下配置: # inside ~/.bash_profile eval "$(pyenv init --path)" # inside ~/.bashrc eval "$(pyenv init -)" 如果我不允许在我的系统上编辑.bashrc(因为与pyenv完全无关的原因),那么将两者都放在我的配置文件中会有什么缺点,如下所示: # inside ~/.bash_profile

在pyenv 2.0.0的最新版本中,当前建议对bash shell进行以下配置:

# inside ~/.bash_profile
eval "$(pyenv init --path)"

# inside ~/.bashrc
eval "$(pyenv init -)"
如果我不允许在我的系统上编辑.bashrc(因为与pyenv完全无关的原因),那么将两者都放在我的配置文件中会有什么缺点,如下所示:

# inside ~/.bash_profile
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
我已经像这样使用了几个小时,但我没有注意到任何问题(在MacOS上,安装了pyenv的自制软件,以及使用venv创建的Python 3.6/3.7/3.8虚拟环境)。我正在试图理解以这种方式配置系统可能有哪些缺点,以及为什么文档中对同时使用.bash_profile和.bashrc做了如此大的处理

以这种方式配置pyenv会在将来给我带来问题吗?

。当您通过键入
bash
exec bash
启动一个新shell时,它只运行
~/.bashrc
。但是,您可以通过始终使用
bash-l
exec bash-l
启动新shell轻松解决此问题,这将使新shell成为登录shell

要了解在非登录shell中不运行
eval“$(pyenv init-”
是否会产生影响,让我们看看
pyenv init-
真正的作用:

$pyenv init-
导出PYENV_SHELL=bash
来源“/usr/local/cillar/pyenv/2.0.0/libexec/。/completions/pyenv.bash”
命令pyenv rehash 2>/dev/null
pyenv(){
地方指挥部
command=“${1:-}”
如果[“$#”-gt 0];则
转移
fi
中的大小写“$command”
再灰化(壳牌公司)
eval“$(pyenv”sh-$命令“$@”)
;;
*)
命令pyenv“$command”“$@”
;;
以撒
}
由于
export-PYENV_-SHELL=bash
$PYENV_-SHELL
放入环境中,因此它也将被导入到非登录SHELL中。所以,这没什么区别

至于其余的部分,您缺少的主要内容似乎是
pyenv
的命令行完成。除此之外,
pyenvshell
pyenv-rehash
还有一些特殊的包装

因此,只要不为
pyenv
使用tab completion,也不在非登录shell中使用命令
pyenv shell
pyenv rehash
,就应该没有什么区别。但是,即使您确实想在那里使用它们,也可以使用
bash-l
启动shell,或者手动运行
eval“$(pyenv init-”