我在 Mac OSX (10.8.2) 上运行 virtualenv,虽然它可以工作(我可以设置 venvs,在它们之间切换,激活和停用),但不能工作的一件事(而且很烦人)是终端提示切换。
我的基本提示是[\u] \w \n\[\033[0;31m\]$\[\e[0m\]
,呈现为:
[hugo] /current/directory/path/
$
即它有一个换行符。
如果我激活一个 virtualenv,我希望:
(myproject)[hugo] /current/directory/path/
$
但事实上我根本没有得到任何改变。
我打开了/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
如果我在最后加上回声,我可以看到PS1
var 设置为(myproject)[\u] \w \n\[\033[0;31m\]$\[\e[0m\]
,但由于某种原因没有坚持,并且没有导出正确的 PS1。
这与我的自定义提示或权限问题有关吗?这显然不是virtualenv 的东西,因为我知道它可以工作(实际上它可以在我的 vagrant VM 上工作,而不是在我的 OSX 主机上)。
?
[更新 1]
我的错误 - 看起来我有一个 git-aware 提示,它根据目录/repo 状态覆盖提示。这就是杀死 venv 提示符的原因。现在我只需要一个两者兼而有之的人 - 所以,后续问题是:有没有人有一个颜色、git-aware、OSX 提示符,可以很好地与 virtualenv 搭配使用。