Как уже упоминалось $!
будет содержать код выхода последней команды при выполнении PROMPT_COMMAND
. Matei David предложил запустить set
из PROMPT_COMMAND
, что показывает, что в окружение ничего (на моей системе) не добавляется:
$ PROMPT_COMMAND="set > /tmp/prompt.log"
$ set > /tmp/basic.log
$ diff -u0 /tmp/basic.log /tmp/prompt.log
# no results
Конечно, это анекдотично и не включает никаких магических переменных Bash или другого состояния, не включенного set
, но это начало.
Вы можете получить последнюю команду с помощью:
last_command=$(HISTTIMEFORMAT='' history 1 | sed 's/ *[0-9]* *//')