O código que você tem funciona perfeitamente no meu Debian. Seu problema pode ser que echo
do OSX não esteja imprimindo a sequência de escape corretamente.
Em geral, é melhor evitar echo
e usar printf
, pois sistemas diferentes têm implementações echo
diferentes e isso pode afetar a portabilidade de seus scripts e causar outros problemas também. Veja aqui para (muito) mais detalhes.
De qualquer forma, tente substituir o echo
s na sua função por 'printf:
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 → "