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