Com base no post de Maghin.
# Use echo -n to leave out the line end.
# Use -C option with hexdump to avoid big endian/little
# endian confusion.
mac $ echo -n 😀 | hexdump -C
00000000 f0 9f 98 80 |....|
00000004
mac $ echo -n 😱 | hexdump -C
00000000 f0 9f 98 b1 |....|
00000004
"Inclua códigos de saída diferentes de 0 no prompt do bash subsequente"
http://stackoverflow.com/questions/5946873/include-non-0-exit-codes-in-the-subsequent-bash-prompt
Aqui está o que eu acabei com:
export PS1='\u $(highlightExitCode) \$ '
highlightExitCode()
{
exit_code=$?
if [ $exit_code -ne 0 ]
then
echo -en '\xf0\x9f\x98\xb1 '
else
echo -en '\xf0\x9f\x98\x80 '
fi
}

Uma alternativa mais direta para a função highlightsExitCode:
highlightExitCode () {
if [ $? -ne 0 ]; then
echo -n '😱 ';
else
echo -n '😀 ';
fi
}
O único problema é que a imagem ruim aparece até você executar um comando bem-sucedido.
