将python版本和pyenv virtualenv名称添加到bash提示符?

时间:2018-04-04 15:47:03

标签: bash ubuntu-16.04 ps1 pyenv

我正在努力实现输出PS1

[3.6.5@BooksHerokuDjango ~]$

我的.bashrc有这个:

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi

eval "$(pyenv virtualenv-init -)"
export PYENV_VIRTUALENV_DISABLE_PROMPT='1'

function __python_prompt {
  version_number=`python -V | cut -d " " -f2-`
  version_name=`pyenv version-name`
  at='@'
  python_prompt=$version_number$at$version_name
  echo $python_prompt
}
PS1="[\$(__python_prompt) \W]\$ "
export PS1

我有以下pyenv versions

[3.6.5@BooksHerokuDjango ~]$ pyenv versions
system
2.7.14
2.7.14/envs/HackerNewsHerokuDjango
3.2
3.2/envs/BlogHerokuDjango
3.6.5
3.6.5/envs/BooksHerokuDjango
3.6.5/envs/PortfolioDjango
BlogHerokuDjango
* BooksHerokuDjango (set by PYENV_VERSION environment variable)
HackerNewsHerokuDjango
PortfolioDjango

当我像这样改变virtualenv时:

[3.6.5@BooksHerokuDjango ~]$ pyenv activate HackerNewsHerokuDjango 
Python 2.7.14
[@HackerNewsHerokuDjango ~]$ 

PS1不会像[2.7.14@HackerNewsHerokuDjango ~]$

那样输出

但后来我又改变了virtualenv:

Python 2.7.14
[@HackerNewsHerokuDjango ~]$ pyenv activate PortfolioDjango 
[3.6.5@PortfolioDjango ~]$

我得到了我想要的PS1输出。我有什么不对,因为它不一致?

0 个答案:

没有答案