Não adianta ficar postando que dá "0", que dá "1" por isso, assado ou cozido...vc tem q entender em q situação isso se aplica!!!
Vamos ao terminal!!!
cqn@cqn:[~]: ls #o comando ls lista conteudo do diretorio atual
zeruela.odf zedroguinh4.pdf zebuneta.doc
Perceba q o comando "ls" acima executou de boas, retornando o conteudo do diretorio, com os 3 arquivos acima.
Agora, vamos entrar no mérito da questao, pra saber o q a variavel $ retorna:
cqn@cqn:[~]: echo $?
0
#retornou "0", pois o comando anterior, ou seja, o "ls" , foi executado com sucesso.
Agora, vamos simular um comando q dá erro. Por exemplo, vamos tentar dar um "ls -l" em um arquivo inexistente!!!
cqn@cqn:[~]: ls -l vai_lavar_o_siri_na_mare.doc #ou seja, um arquivo inexistente
No such file or directory
Vamor dar um echo pra ver o q a variavel retorna???
cqn@cqn:[~]: echo $?
2
No meu caso, retornou 2...testei em outras distros, também retornou 2. Então, ao contrário do q a questao afirma, não é 1, e sim 2!!!