我有运行在Mac OSX(10.8.2)上的virtualenv,虽然它可以工作(我可以设置venvs,在它们之间切换,激活和deactvate),一件不起作用(并且非常烦人)的是终端提示切换.
我的基本提示是[\u] \w \n\[\033[0;31m\]$\[\e[0m\],它呈现为:
[hugo] /current/directory/path/
$
Run Code Online (Sandbox Code Playgroud)
即它有一个换行符.
如果我激活virtualenv,我会期望:
(myproject)[hugo] /current/directory/path/
$
Run Code Online (Sandbox Code Playgroud)
但实际上我根本没有变化.
我打开了/bin/activate脚本,看了看代码:
if [ -z "$VIRTUAL_ENV_DISABLE_PROMPT" ] ; then
_OLD_VIRTUAL_PS1="$PS1"
if [ "x" != x ] ; then
PS1="$PS1"
else
if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
# special case for Aspen magic directories
# see http://www.zetadev.com/software/aspen/
PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
else
PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
fi
fi
export PS1
fi
Run Code Online (Sandbox Code Playgroud)
如果我在最后粘贴一个回声,我可以看到PS1var设置为(myproject)[\u] \w \n\[\033[0;31m\]$\[\e[0m\],但由于某些原因没有粘连,并且没有输出正确的PS1.
这与我的自定义提示或权限问题有关吗?它显然不是一个虚拟的东西,因为我知道它有效(事实上它适用于我的流浪汉VM,而不是我的OSX主机).
?
[更新1]
我的错误 - 看起来我有一个git-aware提示符,它会根据目录/ repo状态覆盖提示符.这就是杀死venv提示的原因.现在我只需要一个同时做到这两者 - 所以,后续问题是:是否有人有颜色,git-aware,OSX提示与virtualenv很好地配合.
che*_*ner 13
无论设置你的git-aware提示是什么,都可能定义了这个PROMPT_COMMAND功能.尝试将此添加到.bashrc文件的末尾.
add_venv_info () {
if [ -z "$VIRTUAL_ENV_DISABLE_PROMPT" ] ; then
_OLD_VIRTUAL_PS1="$PS1"
if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
# special case for Aspen magic directories
# see http://www.zetadev.com/software/aspen/
PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
elif [ "$VIRTUAL_ENV" != "" ]; then
PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
fi
fi
export PS1
}
PROMPT_COMMAND=add_venv_info
Run Code Online (Sandbox Code Playgroud)
什么是阿斯彭魔术目录?我不知道; 这是从activate脚本中复制的代码,用于演示如何使用PROMPT_COMMAND虚拟环境信息包含在您的propmt中.如果它们与您的情况无关,您只需添加所需的PS1=...分配即可.唯一真正重要的部分是1)检查VIRTUAL_ENV_DISABLE_PROMPT和2)进行所需的分配PS1.
我有同样的问题,但上述解决方案对我不起作用.
我最终做到了这一点:(请
注意,还有一个额外的空间来分隔(virtenv)它$
# Virtual ENV stuff
add_venv_info () {
if [ -z "$VIRTUAL_ENV_DISABLE_PROMPT" ] ; then
VIRT_ENV_TXT=""
if [ "x" != x ] ; then
VIRT_ENV_TXT=""
else
if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
# special case for Aspen magic directories
# see http://www.zetadev.com/software/aspen/
VIRT_ENV_TXT="[`basename \`dirname \"$VIRTUAL_ENV\"\``]"
elif [ "$VIRTUAL_ENV" != "" ]; then
VIRT_ENV_TXT="(`basename \"$VIRTUAL_ENV\"`)"
fi
fi
if [ "${VIRT_ENV_TXT}" != "" ]; then
echo ${VIRT_ENV_TXT}" "
fi
fi
}
# Now we construct the prompt.
# in my case a bunch of lines constructing the complete PS1
# somewhere call the add_venv_info function like below
PS1=${PS1}"\[\$(job_color)\]\n\$(add_venv_info)\$\[${NC}\] "
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4066 次 |
| 最近记录: |