web-dev-qa-db-ja.com

「シェル」と「バッシュ」という用語の違いは何ですか?

「Shell」と「Bash」の違いは何ですか?これらの用語はどういう意味ですか?

私の知る限り、違いはありません。しかし、私は「シェル」に関する本や「バッシュ」に関する本をたくさん見ました!

そのため、Mac OS Xでターミナルを操作してbashスクリプトを作成したい場合は、どの種類の本を選ぶべきか疑問に思います。

11
R.Hen

シェル 」は、オペレーティングシステムへのインターフェイスを提供するソフトウェアです。たとえば、 Explorer.exe はWindowsのデフォルトのシェルです(ただし 代替が存在します )、OS Xでは Finder は同じ機能の多くを提供します。 Linux/* nixでは、シェルはデスクトップ環境の一部( Gnome[〜#〜] kde [〜#〜] など)にすることも、その上にある個別のソフトウェアコンポーネント( nity または Cinnamon など)。

上記の例はすべて、ウィンドウ、メニュー、アイコン、およびその他のそのような要素の組み合わせを使用して、マウスカーソルを使用して操作できるグラフィカルユーザーインターフェイス(GUI)を提供するグラフィカルシェルです。ただし、Bashのようなソフトウェアやスクリプトの作成のコンテキストでは、「シェル」は通常、完全にテキストベースであることを除いて、グラフィカルシェルとほぼ同じ役割を実行するコマンドラインインタープリターを意味すると解釈されます。

Bash は、コマンドラインシェルの特定の例であり、おそらく最もよく知られているものの1つであり、OSXだけでなく多くのLinuxディストリビューションでもデフォルトになっています。これは代替として設計されました。 Bourne Shell (Bashは "Bourne again Shell"の略)の場合、最初の nixシェル の1つです。

Windowsのコマンドラインシェルの例には、 cmd.exe (別名コマンドプロンプト)および PowerShell が含まれます。

31
Indrek

Bashはいくつかのシェルの1つです。

UnixまたはOSXやLinuxなどのUnixライクなシステム上のシェルは、オペレーティングシステムへのコマンドラインインターフェイスを提供するアプリケーションプログラムであり、コマンドを入力して実行することができます。選択できるシェルは多数ありますが、それらはすべて、ファイル名のワイルドカード、パイピング、ヒアドキュメント、コマンド置換、変数、および条件テストと反復のための制御構造を提供します。

オリジナルのUnixシェルは Bourne Shell 、shで、ベル研究所のStephenBourneによって書かれました。次に、 tcsh として更新されて以来、BerkeleyのBill Joyによって書かれた C Shell が登場しました。他のシェルには、同じくベル研究所でDavid Kornによって書かれた Korn Shell 、ksh、および bash 、=のためにBrianFoxによって書かれた "Bourne againShell"が含まれます。 GNU shの無料の代替としてのプロジェクト。

今日、bashはおそらく最も人気のあるUnixシェルですが、多くの人々(私を含む)は、より優れた構文に基づいたCシェルを依然として好んでいます。基本的には好みの問題なので、始めるのに役立つようにリンクしたウィキペディアの記事を読むことをお勧めします。

13
Nicole Hamilton

「シェル」という用語はよく名付けられています。これは文字通り、ユーザーがコンピューターと対話できるようにするO/Sの周りのシェルです。それが最初に考案されたとき、グラフィカルユーザーインターフェイスはほとんどありませんでした(ウィンドウはありません:()。すべてはコマンドラインで行われました。しかし、コマンドラインでさえ住む場所が必要でした。それはシェルに住んでいました。 。

簡単に言うと、コマンドラインを使用するには、呼び出すことができる命令が必要でした。そのため、コマンドラインで使用できるようにプログラムがシェル内で実行されるようになりました。プログラムは独自のパッケージに緊密にグループ化されており、連携することを目的としています。これらには、「ls」や「grep」、「ps」、「sed」などのプログラムが含まれます。また、「>」や「<」などのファイルリダイレクトコマンドやパイプ(「|」)も含まれます。さらに重要なことに、条件付き操作(if、then、else、forループ、whileループ、ステートメントの実行時に返されるステータスを確認する方法(たとえば、「ls」を実行した場合、何かが見つかりましたか?)などのプログラミング構造も含まれています。そのように)。これらは、より複雑なコマンドライン(シェル)スクリプトの基盤であり、実際にはコマンドラインインタープリターです。

誰かが「Bashシェル」という用語を使用するとき、彼らはO/Sシェルで実行される「Bash」と呼ばれるコマンドラインインタープリターについて話します。 'Bash ShellInterpreter'の略であると考えることができます。 Bourneのような他の通訳者もいます(Bashは新しく改良されたBourne Shellであり、Bourne Again Shellの略です)。 Cシェル、Kシェル(複雑なシェルスクリプトを作成する多くの人に好まれている)、その他のGNUバリアント)もあります。長年にわたって、特定のコマンドを参照するのが通例になっています。シェルとして使用しているラインインタープリターは、一方が他方なしでは使用できないためですが、実際にはそれらは異なります。

それらが実際のシェルではなくコマンドラインインタープリターとして適切に知られている理由については、シェルに存在し、すべてのコマンドをプログラムで実行されているかのように解釈するためです。また、シェルは、正しい基準を満たしている限り、どのインタープリターを実行してもかまいません。

そして、なぜ彼らが通訳者と呼ばれるのかというと、それは彼らが本当に通訳者だからです。スクリプトを明示的に実行していない場合でも(スクリプトは実際には作成したコマンドのテキストファイルであるため、同じコマンドを何度も入力しなくても実行できます)。たとえば、控えめな「ls」コマンドを使用します。実行すると、ファイルのリストが返されます。ただし、どのように実行するかは、質問にとってより重要です。単純な1回限りのコマンドのように見えるものを実行するだけでも、実際にはコマンドラインインタープリターのコンテキスト内で実行されます。つまり、より大きなプログラムの一部のステートメントであるかのように実行されます。実際にはシェルスクリプトファイルに含まれていなくても、シェルスクリプトスクリプトファイルにあるかのように実行されます。匿名のシェルスクリプトファイル。

コマンドラインで実行するものにはすべて共通点があります(「ls」のような単一のコマンドであろうと、コマンドとイテレーターと条件ステートメントでいっぱいのスクリプトファイルであろうと):すべてコマンドラインインタープリターによって処理されます。 Bash、C-Shell、K-Shell(AIXのデフォルト)です。

私が何を意味するかを確認するには、ディレクトリ 'test'を作成します。

mkdir test

それを入力し、次のコマンドを実行します

grep hello * 

'そのようなファイルやディレクトリはありません'のような何らかの応答があります。ここでコマンドを入力します

echo $?

($?は、不可解なコンピューターで見つけたものを教えてください。)数字が返されるのがわかるはずです(そうあるべきです)「2」。これは、「そのようなファイルまたはディレクトリがない」ことを意味するgrepからの戻りコードです。次に、以下を実行します。

echo hello > hello.txt
grep hello *
echo $?

最初のgrepコマンドから返されたファイル「hello.txt」が表示され、「echo $?」が表示されます。実際に何かが見つかったことを意味する数値「0」を返します。

これらの一見一回限りのコマンドが実行された場合でも、コマンドラインインタープリターはそれらがより大きなプログラムの一部であるかのように動作し、それらの戻り値を追跡します。そのため、grepコマンドの最後にある*を忘れると、返されません。ステートメントが不完全であることを認識しており、より多くの入力を期待しています。結局のところ、コマンドラインで記述して実行するのに完全に合法であるループの結果をgrepするように要求する可能性があります。

結論として、シェルはシェルであり、インタープリター(使用する名前が何であれ、「Bash」、k-Shellなど)は異なります。しかし、それらはいつでも完全に結びついているため、しばしば同じ意味で使用されます。

6
Bill Rosmus

シェルはテキストベースのユーザーインターフェイスです。

Bashはシェルの一種です。

2
HayekSplosives

bashShellファミリーの1つですが、他にもたくさんのシェルがあります。

たとえば、 Minix には、ashシェルがあり、bash4のような連想配列はサポートされていません。

[〜#〜] posix [〜#〜] 標準は、異なるシェルとOS間で移植可能なAPIを作成する試みです。

http://en.wikipedia.org/wiki/Unix_Shell#Bourne_Shell_compatible を参照してください。

1
Gilles Quenot

bashは、存在する多くのシェルの1つです。

すべてのシェルには類似点と相違点があります。たとえば、bashで記述されたスクリプトは、別のシェルと完全にまたは大部分が互換性がある場合があります(たとえば、 zsh )。

bashは非常に普及しているため、スクリプトと互換性があることが暗示されることがよくあります。

本を購入したい場合は、使用するシェル専用に書かれた本を購入してください。しかし、お金を使う前に、それらの違いを読んでおくのは良い考えです。

1
dset0x