Eu queria modificar meu PS1 para executar alguns comandos todas as vezes. Digamos que eu queira que, se o último comando executado for bem-sucedido, adicione um sorriso verde no final do PS1, caso contrário, o sorriso deve ser vermelho.
Eu extraí para uma função:
function exit_smile {
EXITSTATUS="$?"
RED="\[\e[1;31m\]"
GREEN="\[\e[32;1m\]"
if [ "${EXITSTATUS}" -eq 0 ]
then
SMILE="${GREEN}:)"
else
SMILE="${RED}:("
fi
echo -n "$SMILE"
}
e então tentou usar `exit_smile`
e \$(exit_smile)
ao modificar a variável PS1, mas a executa uma vez ao modificar o PS1 ou imprime literal \[\e...\]
em vez de uma cor.
Por exemplo
PROMPT="\u@\h \W"
PS1="${PROMPT} \$ \$(exit_smile) ${OFF}\n"
Dá username@hostname ~ $ \[\e[32;1m\]:)
O que estou perdendo?