可能/如何获取在最后一个命令之前执行的命令的返回码?

Linux bash(或其他shell)。你有没有发过“echo $?”? 变成类似“echo $ 4”的东西,从而永久地阻止你知道前一个命令的返回码? 我经常这样做(这太令人讨厌了),所以我想我会问:bash和/或linux是否有一个“返回代码栈”或数组,或者包含前一个命令返回代码的东西,而不仅仅是最后一个你跑了? 我正在谈论不涉及pipe道的简单命令。

如果你想查看交互式bash的返回码,你可以使用PROMPT_COMMANDvariables,如下所示:

  PROMPT_COMMAND='RC=$?; if [ $RC -ge 128 ]; then SIG=$[RC-128]; echo -e "Signal $SIG = $(kill -l $SIG)"; fi; if [ $RC -ne 0 ]; then echo -n "! (RC=$RC) "; fi' 

这个variables中的命令在每个命令后执行。 它应该只包含bash内部命令。 在我的例子中,它显示$? 如果它不是0,并且信号是前一个命令被信号杀死的话。