Это по замыслу. Если вы посмотрите diff
страницу руководства, вы увидите следующее утверждение:
Состояние выхода равно 0, если входы одинаковы, 1, если отличается, 2, если проблема.
Состояние выхода 0
означает true
для оболочки, поэтому отображается «То же». В обоих других возможных состояниях «Разное» отображается как что-либо отличное от нуля false
.
if
Поведение описано в странице ручной оболочки, вот например bash
:
if list; then list; [ elif list; then list; ] ... [ else list; ] fi
Список if выполнен. Если статус выхода равен нулю, тогда список казнены. В противном случае каждый список elif выполняется по очереди, и если его выход статус равен нулю, соответствующий список выполняется и команда завершается. В противном случае список else выполняется, если присутствует. Статус выхода это состояние выхода последней выполненной команды или ноль, если нет условий проверено верно.