У меня есть пользовательское $PROMPT_COMMAND
в ударе, который регистрирует последнюю выполняемую команду и ее код возврата. Я использовал $?
для последнего счастливо, пока я не понял, что для переданных по каналу команд это было недостаточно. Я думал, что зарегистрируюсь ${PIPESTATUS[@]}
вместо этого.
К сожалению, $PIPESTATUS
кажется, установлен после вызова $PROMPT_COMMAND
. Есть ли любой обман, который я могу использовать для доступа к этой информации во время выполнения $PROMPT_COMMAND
?
Ммм, возможно, это зависит еще и от версии bash.
Давайте попробуем выполнить это простое назначение в конфигурации вашего профиля bash:
export PROMPT_COMMAND="echo status=$?"
Баш 4.1.2 работает нормально. В командной строке bash я набираю несуществующую -команду:
status=127
bash 3.2.25 всегда печатает
status=0
В строке команды -проверяю переменную
echo $PROMPT_COMMAND
На рабочем хосте соответствует моему назначению. На другом хосте его значение равно
.history -a;history -n;echo status=$?
Для чего нужны эти команды? Являются ли они причиной проблемы?