sh vs bash : A summary

4月 18, 2021
admin

もしあなたがこれを読んでいるなら、過去にシェル、sh、bashなどの用語に出会ったことがある可能性が高いです。 これらの用語は混乱しているように聞こえるかもしれませんが、これらは密接に関連しているため、問題をさらに悪化させています。

シェル vs カーネル

先に進む前に、シェルとカーネルという用語が何を意味するのかを理解することが重要です。 ハードウェアとの対話、ファイル I/O の実行、およびプロセスの起動などの処理を担当します。 技術的に言えば、シェルはコマンドラインインタプリタであり、ターミナルエミュレータ (対話モード) で入力したコマンドを解釈するか、シェルスクリプト (コマンドを含むテキストファイル) を処理するプログラムである。

さて、シェルとカーネルが何であるかを理解したところで、sh と Bash について理解しようとします。 ここで重要なのは、shはそれ自体がプログラミング言語ではない、ということです。 単なる仕様書なのです。 仕様書とは、その言語の構文と意味論を詳細に記述したものです。 仕様には実装は含まれていません。

Bash

独自のシェルやカーネルを持つさまざまなオペレーティングシステムが存在します。 BashはGNUオペレーティングシステムのためのシェルである。 しかし、bash はプログラミング言語であるとも言えます。

Wait, isn’t that confusing? bashはシェルであり、プログラミング言語でもあるのでしょうか。

pythonについて考えてみましょう。 Python を対話モードで起動することもでき、シェルのように振る舞います。 あるいは JavaScript、Ruby、その他のスクリプト言語。

理にかなっていますか。

つまり、bashはshの実装と考えられるプログラミング言語です(時代とともに変化していますが)

要約すると、shは仕様、bashは実装です

コメントを残す

メールアドレスが公開されることはありません。