I am trying to create a Bash prompt that will have both my git branch information (using __git_ps1 from git bash -completion) and a slightly colored emoticon to indicate whether the last run command was successful.
A smiley is created using this technique that I found here on SO:
SMILEY="${GREEN}:)${COLOR_NONE}" FROWNY="${RED}:(${COLOR_NONE}" STATUS_EMOTICON="if [ \$? = 0 ]; then echo \"${SMILEY}\"; else echo \"${FROWNY}\"; fi"
Here's the prompt string I want to use:
export PS1="[\t]${RED}[\ u@ $MACHINE:${BOLD_CYAN}\w${GREEN}\$(__git_ps1 ' %s')${RED}]${COLOR_NONE} \`${STATUS_EMOTICON}\`\n$ "
Unfortunately, it seems like programs running __git_ps1 override the value of $? , and in the end I get a green emoticon, even after running false .
Call __git_ps1 ...
export PS1="[\t]${RED}[\ u@ $MACHINE:${BOLD_CYAN}\w${RED}]${COLOR_NONE} \`${STATUS_EMOTICON}\`\n$ "
... makes the emoticon work correctly.
So what I apparently need to do is evaluate ${STATUS_EMOTICON} before running __git_ps1 , but include the estimated value after __git_ps1 output. Is it possible?
source share