Der Code, den Sie haben, funktioniert perfekt auf meinem Debian. Ihr Problem könnte sein, dass OSX echo
die Escape-Sequenz nicht korrekt druckt.
Es ist im Allgemeinen besser zu vermeiden echo
und printf
stattdessen zu verwenden, da verschiedene Systeme unterschiedliche echo
Implementierungen haben und dies die Portabilität Ihrer Skripts beeinträchtigen und auch andere Probleme verursachen kann. Sehen Sie hier für (viel) mehr Details.
Versuchen echo
Sie auf jeden Fall, die s in Ihrer Funktion durch `printf zu ersetzen :
branch_color() { if git status 2>/dev/null | grep --quiet "nothing to commit"; then printf "\e[0;94m" else printf "\e[0;91m" fi } PS1="\[$IGreen\]\u \[$ICyan\][\W]\[\$(branch_color)\]\$(parse_git_branch)\[$IWhite\] \n → " PS1="\[$IGreen\]\u \[$ICyan\][\W]\[\$(branch_color)\]\$(parse_git_branch)\[$IWhite\] \n → "