Você está substituindo seu RET=0
por RET=$?
quando o próximo prompt for impresso sem ter executado um comando no meio. $?
retorna o valor de retorno do último comando executado e ainda é 1
.
Bash permite que você capture erros em comandos executados e execute código em resposta a isso (uma vez):
function err_handle {
RET=$?
if [[ $RET != 0 ]]; then
echo -ne "Status $RED_SHELL$RET\n"
fi
}
trap 'err_handle' ERR