Linux シェルを使用する場合、ゼロ終了ステータスはブール論理の終了ステータスと異なりますか?

Linux シェルを使用する場合、ゼロ終了ステータスはブール論理の終了ステータスと異なりますか?

アンパサンド演算子を使用してシェルでコマンドを実行するとcommand1&&command2、最初のコマンドが正常に実行され、終了ステータスがゼロになることは理解しています。

これは、0 が偽で 1 が真であるブール論理と似ているのでしょうか、それとも違うのでしょうか、それとも私が誤って理解しているのでしょうか?

使用するシェルの種類によって違いはありますか? 現在、Bourne-Again Shell を実行しています。

答え1

シェルでは、ほとんどの場合、エラーがゼロで成功を示すのに 0 が使用されます。したがって、この意味では、0 が通常 false である多くのプログラミング言語とは異なり、論理的には true です。ただし、最近の言語では、true と false の論理値が明確に区別される傾向があります。

答え2

より適切な根拠は、実際には「成功」は 1 つしかないが、「失敗」には複数の理由 (ファイルが見つからない、引数エラー、計算エラーなど) があるということです。これは、プロセス間通信における OS の慣例であり、シェルだけではありません。戻りコードはシステムexit(2)コールによって送信され、呼び出しによって受信されますwait(2)

関連情報