Как установить $? в функциях, вызываемых PS1?

В настоящее время у меня есть приглашение в bash, которое вызывает функцию для вывода кода возврата последнего запуска команды (, если не -ноль):

exit_code_prompt()
{
    local exit_code=$?
    if [ $exit_code -ne 0 ]
    then
        tput setaf 1
        printf "%s" $exit_code
        tput sgr0
    fi
}


PS1='$(exit_code_prompt)\$ '

Это работает довольно хорошо, за исключением того, что $?не сбрасывается до тех пор, пока не будет запущена другая команда:

$ echo "works"
works
$ command_not_found
bash: command_not_found: command not found
127$ 
127$ 
127$ 
127$ echo "works"
works
$

Можно ли сбросить/отменить значение $?для родительской оболочки при первом запуске exit_code_prompt(), чтобы оно не повторяло значение в приглашении?

Большое спасибо, Стив.

6
задан kojiro 8 August 2012 в 17:13
поделиться