Windows Git bash提示符不显示函数的颜色

我在我的.bash_prompt中使用下面的颜色代码/函数(捏爱尔兰语),以显示分支名称和状态在Windows上的Git bash。

MAGENTA="\033[1;31m" ORANGE="\033[1;33m" GREEN="\033[1;32m" PURPLE="\033[1;35m" WHITE="\033[1;37m" BOLD="" RESET="\033[m" function git_info() { # check if we're in a git repo git rev-parse --is-inside-work-tree &>/dev/null || return # quickest check for what branch we're on branch=$(git symbolic-ref -q HEAD | sed -e 's|^refs/heads/||') # check if it's dirty (via github.com/sindresorhus/pure) dirty=$(git diff --quiet --ignore-submodules HEAD &>/dev/null; [ $? -eq 1 ]&& echo -e "*") echo $WHITE" on "$PURPLE$branch$dirty } 

该function正确显示信息,但不是给两个部分着色,而是像这样打印出颜色代码:

 \[\033[1;37m\] on \[\033[1;35m\]working* $ 

这是使用以下(减less说明问题)PS1线:

 PS1="\$(git_info)\n$ " 

我应该注意,如果代码直接添加到PS1线,颜色工作正常,即:

 PS1="\[$PURPLE\]\w\n$ \[$RESET\]" 

我感觉我的方式在这个bash定制,所以可能会做一些明显愚蠢的事情!

也许echo -e 。 从man echo

-e enable interpretation of backslash escapes

另外,你可以在双引号内使用变量:

 echo "$WHITE on $PURPLE$branch$dirty"