git - 为什么我的 bash 提示不更新?

标签 git bash ps1

我是 git 的新手,我正在尝试将当前的 git 分支添加到我已经存在的提示中,该提示定义如下:

RESET="\[\017\]"
NORMAL="\[\033[0m\]"
RED="\[\033[31;1m\]"
YELLOW="\[\033[33;1m\]"
WHITE="\[\033[37;1m\]"
SMILEY="${WHITE}:)${NORMAL}"
FROWNY="${RED}:(${NORMAL}"
SELECT="if [ \$? = 0 ]; then echo \"${SMILEY}\"; else echo \"${FROWNY}\"; fi"

export PS1="${RESET}${YELLOW}\u@\h${NORMAL} \`${SELECT}\` ${YELLOW}\w $(__git_ps1) >${NORMAL} "

我试过了(再次获取我的 .bashrc 文件),它似乎可以工作,但后来我转到另一个分支,它没有更新。如何确保 $(__git_ps1) 未被缓存?

最佳答案

您需要在 $ 上加一个反斜杠,这样它就不会立即展开。 (与 `...` 相比,后者是 $(...) 的另一种写法。)

export PS1="${RESET}${YELLOW}\u@\h${NORMAL} \`${SELECT}\` ${YELLOW}\w \$(__git_ps1) >${NORMAL} "

我同意@MikeSep 关于使用单引号的观点,但让颜色等立即被替换实际上更优化。没必要,稍微好点就好了。也就是说,如果您使用单引号, 会更容易理解发生了什么。

关于git - 为什么我的 bash 提示不更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5379986/

相关文章:

bash - Redis服务器自动宕机如何脚本重启?

powershell - 替换powershell中变量的一部分而不替换其余部分?

bash - 简化高级 Bash 提示变量 (PS1) 代码

bash - 正确获取动态 bash 提示符 PS1

git - Git 中的 merge 冲突与 Subversion 中的 merge 冲突相比如何?

bash - 如何将 bash 设置为 git 别名中的默认 shell?

bash - 如何在 Bash 中以另一个用户身份执行一组命令?

python - 如何使用 python 模块的多个 git 分支?

Git 难题 : rm -r and . gitignore 不起作用

svn - 为什么 Git 比 Subversion 好?