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


11

「シェル」と「バッシュ」の違いは何ですか?これらの用語の意味は何ですか?

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

だから、Mac OS Xのターミナルで作業し、bashスクリプトを書きたい場合、どの種類の本を選べばいいのか疑問に思う。


7
クラスとインスタンスの区別です。
カズ


1
最初のシェルはボーンという男によって書かれました。BASHは「Boune Again Shell」の頭字語です。楽しむことが重要です!
Kinjalディキシット

回答:


31

シェル」は、オペレーティングシステムへのインターフェイスを提供するソフトウェアです。たとえば、explorer.exeはWindowsのデフォルトのシェルであり(代替手段は存在します)、OS X Finderではほぼ同じ機能を提供します。Linux / * nixでは、シェルはデスクトップ環境の一部(GnomeKDEなど)であるか、その上にある別のソフトウェアコンポーネント(UnityCinnamonなど)である可能性があります。

上記の例はすべて、ウィンドウ、メニュー、アイコンなどの要素を組み合わせて使用​​し、マウスカーソルを使用して操作できるグラフィカルユーザーインターフェイス(GUI)を提供するグラフィカルシェルです。ただし、Bashのようなソフトウェアやスクリプトの記述のコンテキストでは、「シェル」は通常、コマンドラインインタプリタを意味するものと見なされます。

Bashはコマンドラインシェルの特定の例であり、おそらく最もよく知られているシェルの1つであり、多くのLinuxディストリビューションおよびOS Xのデフォルトです。Bourneシェルの代替として設計されました(Bashは「Bourne again shell」)、最初のUnixシェルの 1つ。

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


3
Finderは通常、OS Xではシェルと呼ばれません。ほとんどのGUIおよびウィンドウ管理機能は、他のプロセスによって処理されます。
Lri

1
@LauriRanta ウィキペディアは同意しないようです。他のプロセスの助けを借りているかどうかに関係なく、その仕事はユーザーがGUIを介して基盤となるOSと対話できるようにすることであり、したがってグラフィカルシェルの説明に適合します。
インドレック

1
グラフィカルシェルという用語は、ファイル管理アプリケーションにも当てはまると思います。しかし、一般的にOS Xでは使用されず、FinderはWindowsシェルやUnityよりもNautilusに似ています。
Lri

6
@LauriRanta:簡単なクイズ、ノーチラスのアイコンは何ですか?
ライライアン

2
@LauriRanta Dockはシェルのより良い候補ではないでしょうか?プログラムを起動してドキュメントを開く、Expose / Spaces / Mission Control、AFAIK Launchpad、タスクスイッチャーもすべてDockの機能です。
ダニエルベック

13

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

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

元のUnixシェルは、Bell LabsのStephen Bourneによって書かれたBourne shellでした。その後、BerkeleyのBill Joyによって書かれたCシェルが登場し、tcshとして更新されました。他のシェルには、Kornシェル(ksh)のデビッド・コーンによって書かれ、また、ベル研究所の、およびbashの shのための無料の代替としてGNUプロジェクトのためにブライアン・フォックスによって書かれた、「ボーンは再びシェル」、。

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


2
シェルは必ずしもコマンドラインベースではなく、Nautilus、Windows Explorer、Finderなど、多くのグラフィカルシェルもあります。シェルの重要なポイントは、コアOS機能/システムコールを囲むラッパー/ユーザーインターフェイス/シェルです。つまり、シェルはリソースの管理(ファイル管理など)とプロセスの管理を提供します。
ライライアン

1
@LieRyanはシェルではなく、ファイルマネージャーです。シェルを使用すると、統合されたコマンド/スクリプトインタープリターをシェル内で実行できます。私の答えをご覧ください。ファイルマネージャからプログラムを実行できるだけでは、シェルになりません。
ビルロスマス

@BillR:Gnome Shellの担当者に自分の定義を知らせる必要があります。
パラドロイド

2
私は、Lie Ryanとparadroidに同意する傾向があります。グラフィカルシェルはシェルと見なされるようになりました。私はコマンドラインのパラダイムに誰と同じように投資しており、90年代までグラフィカルシェルをシェルとして受け入れることに抵抗していました。しかし、すべてのコントロールパネルウィジェットと、最新のグラフィカルシェルのその他のウィジェットでは、一般的な使用法はそれらをシェルと呼ぶことであり、その使用法は正しいということに同意します。これらは、シェルの定義、つまり基盤となるOSの周りの比較的薄いユーザーインターフェイスレイヤーに一致します。グラフィカルシェルは、だれもが何かをスクリプト化する方法については弱いですが、多くのユーザーはそれを気にしません。
ニコールハミルトン

6

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

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

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

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

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

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

意味を確認するには、「テスト」ディレクトリを作成します。

mkdir test

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

grep hello * 

「そのようなファイルやディレクトリがありません」などの何らかの応答が返されます。次にコマンドを入力します

echo $?

($?は、暗号化されたコンピューターの発言で見つけたものを教えてくれます。)「2」という数字が返されるはずです。これは、grepからの戻りコードで、「そのようなファイルやディレクトリはありません」という意味です。次を実行します。

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

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

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

要するに、シェルはシェルであり、インタープリター(使用するものの名​​前が何であれ、「Bash」、kシェルなど)は異なります。しかし、多くの場合、それらは互換的に使用されます。これは、任意の瞬間に完全に結び付けられているためです。


2

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

Bashはシェルの一種です。


2
「テストベースのユーザーインターフェイス」とは何ですか?また、答えを少し広げておくといいでしょう。他の答えからわかるように、より多くのコンテキストを提供することは常に役立ちます。
slhck

ごめんなさい。テキストベースのユーザーインターフェイス。そのことについて私にどのように説明したいですか?シェルは、オペレーティングシステムカーネルと対話するコマンドラインの方法です。シェルはコマンドを解釈し、それらをマシンに中継し、マシンは次に、指定したコマンドに関連する必要な操作を実行しますか?500ページのマニュアルがなければ、この曖昧な質問を効果的に説明することは困難です。答えの努力は質問の努力に合っています。この質問は、リンゴとオレンジです。
-HayekSplosives

質問が今努力を示していると思うなら、それに対する答えに努力をしてはいけないということを自動的に意味しない。あなたの答えは、他のものと比較して、少し詳細に欠けています。もちろん、それを追加するのはあなた次第です。
-slhck

個人的な責任の修正とレッスンに感謝します。努力する意志のない人を、そうする人から守ってくれてありがとう 私はポスターをどれだけ借りたか忘れてしまいました。
-HayekSplosives


1

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.