Eu uso este :
BOLD_FORMAT="${BOLD_FORMAT-$(color_enabled && tput bold)}"
ERROR_FORMAT="${ERROR_FORMAT-$(color_enabled && tput setaf 1)}"
RESET_FORMAT="${RESET_FORMAT-$(color_enabled && tput sgr0)}"
PS1='$(exit_code=$?; [ $exit_code -eq 0 ] || printf %s $BOLD_FORMAT $ERROR_FORMAT $exit_code $RESET_FORMAT " ")'
Concatene isso com o resto do seu $PS1
, mas certifique-se de que você ainda usa as aspas simples; caso contrário, não funcionará, e você deve ser de ouro. Se você quiser exibir o código de saída mesmo que seja zero, simplesmente remova o [ $exit_code -eq 0 ] ||
bit.