O código de saída de um comando é gerado apenas uma vez e, se não for processado posteriormente, a única coisa que salva esse código de saída é o shell. bash
apenas salva o código de saída do último comando.
Para procurar o código de saída dos comandos mais antigos, você precisa salvá-los em uma variável, assim:
$ echo "This command will succeed"
$ exitcode=$?
...
$ echo $exitcode
0