$?
— код возврата предыдущей команды. Если вы хотите увидеть это, вам нужно echo $?
. Обычно он используется в утверждениях if
(, где 0
= true, к сожалению ).
Вы не получили сообщение «команда не найдена» для ls
. Вы можете увидеть вывод ls
прямо здесь. Вы получили command not found
вместо 0
, до чего расширяется $?
.
$?
— статус предыдущей команды. После запуска ls
статус равен 0, так как ошибок не было. После запуска good
статус равен 127, который используется оболочками, когда команда не найдена.
Если вы хотите отобразить статус, вам нужно указать оболочке, что вы хотите отобразить его. Именно для этого предназначена команда echo
.
good; echo $?
ls; echo $?