Como mencionado, $! conterá o código de saída do último comando quando PROMPT_COMMAND for executado. Matei David teve uma boa sugestão para executar set do PROMPT_COMMAND , o que revela que não há nada (no meu sistema) sendo adicionado ao ambiente:
$ PROMPT_COMMAND="set > /tmp/prompt.log"
$ set > /tmp/basic.log
$ diff -u0 /tmp/basic.log /tmp/prompt.log
# no results
É claro que isso é anedótico e não inclui nenhuma variável mágica Bash ou outro estado não incluído por set , mas é um começo.
Você pode obter o último comando com:
last_command=$(HISTTIMEFORMAT='' history 1 | sed 's/ *[0-9]* *//')