我的(简体)PS1:export PS1="\A \w\ $(__git_ps1) \$ "
提示:16:08-~/dev (master) $
这一切都很好,当有一个分支时,它会显示分支名称。但是在仓库之外,它仍然显示(master)
而不是``。我一直在疯狂地搜索,但找不到答案。
你需要什么环境信息来帮助我解决这个问题?我对Bash还不是很熟悉。一定有什么地方不对劲。或者是我的Git版本有问题?
16:08 ~/dev (master) $ git --version
git version 2.7.4
字符串
提前感谢您来看看这个!
2条答案
按热度按时间q9rjltbz1#
当你定义
PS1
时,你只运行__git_ps1
* 一次 *,并且在以后的每个提示符中使用相同的值。你想在提示符显示时 * 每次 * 运行该命令,所以你需要转义$
以防止命令替换立即发生。字符串
xxhby3vn2#
问题是在原始版本中使用了双引号(而不是单引号)。这意味着
$(__git_ps1)
只在第一次(当PS1..创建时?)被计算,而不是在每次调用时(它应该)。