GNU/Linux >> Linux の 問題 >  >> Linux

Bash がどこにでもあるのはなぜですか (すべてではないにしても、ほとんどの Linux ディストリビューションで)。

歴史 (研究によってではなく、ベル研究所の人々との付き合いにあまりにも多くの時間を費やすことによって得られたもの):

<オール>
  • 最初は (最初が Unix バージョン 7 であると考えれば) Bourne シェルでした。 Steve Bourne は、ユーザーの対話を制御するシェルがオペレーティング システムの特別な部分ではなく、ユーザー プログラムである可能性があることを最初に示しました。歴史的大躍進。シェル自体はスクリプティングには比較的クリーンでしたが、コマンドライン編集やジョブ制御はありませんでした。 Bourne の Introduction to the Unix Shell

    編集 :同じく Multics の Ken Thompson と John Mashey の「前史」を無視しました。ボーンはこのすべての研究を認識していたと確信していますが (彼はベル研究所の同じ 1127 の研究室にいました)、ボーンの殻は決定的であり、以前の研究はスティーブ ボーンによる解釈を除いてほとんど影響を与えませんでした。たとえば、Ken は後に Plan 9 の C コンパイラを書き、Plan 9 に大きな影響を与えましたが、Tom Duff の Plan 9 シェルに関する論文 (rc) では Bourne のシェルについてのみ言及されており、Thompson のシェルについては言及されていません。

  • シェルは単なるユーザー プログラムなので、誰でも作成できます。バージョン 7 Unix がニュージャージーで作成されたとき、Berkeley Unix はカリフォルニアで作成されました。バークレー校の Bill Joy は csh を書きました 、C シェル。ジョイはジョブ制御と履歴を追加し、後にコマンドライン編集を追加しましたが、ボーンの作業を認識していなかったため、彼の言語はトンプソン シェル (前の箇条書きで「先史時代」と見なした) に基づいていました。 Unix コミュニティはジョブ コントロールを愛していましたが、Bourne の言語も愛していました。 csh 言語に対するあまり良くない論争については、「有害と見なされる Csh プログラミング」を参照してください。しばらくの間、多くの人が csh を使用していました ジョブ制御と履歴機能のためにインタラクティブに使用されましたが、Bourne の sh を使用しました スクリプトを作成します。この状況は理想的とは言えませんでした。

    編集 :csh の年表について教えてくれた DigitalRoss に感謝します .私は、BSD を「バークレーの異端」と呼ぶ人々から教育を受けたので、そこには事実がほとんどありませんでした。

  • Bell Labs の Dave Korn は、Bourne シェルを見事に再設計して、Korn シェル (ksh) を作成しました。 Bourne シェル sh との完全な下位互換性がありました しかし、計り知れないほどの改善をもたらしました。 ksh POSIX 標準の基礎となり、Sun ソフトウェアの標準として出荷されました。 (Bill Joy が Sun の設立を手伝うために Berkeley を離れ、Sun の主要なソフトウェア担当者の 1 人だったにもかかわらずです。)

  • Bell Labs と AT&T は愚かにも ksh の作成に失敗しました オープンソース。 ksh88 広く使用されていますが、情報源を持つことは合法ではありません。一部の人々は中毒になり、デジタル犯罪者になります.

    編集 :これは本当に愚かでしたか?わかりにくい。バークレーはすでに Unix を無償提供しており、他の企業もすぐにそれに続くことになりましたが、これはまだ大企業が Unix に課金することを信じていた時代でした。しかし、結果:AT&T Unix は、何度もさまざまな関係者に売却された後、死んでしまいました。 BSD とその派生物は健在ですが、「Linux」や「GNU」と呼ばれる新興企業は、かつてベル研究所に属していたマインドシェアの大きな部分を占めています。

  • Free Software Foundation は、POSIX シェルのゼロからの実装から「クリーンルーム」を行い、当時の Dave Korn のアイデアをすべて取り入れ、さらに通常の FSF スタイルで、プログラム補完などの独自の新機能を追加します。彼らはそれを「Bourne again」シェル、または bash と呼んでいます .

  • 1990 年代半ばに AT&T が ksh93 をオープンソース化 、しかし、それまでに広く採用するには遅すぎます。ライセンス契約は奇妙に非標準的です。 bashksh 発散、および ksh 歴史におけるその位置に見合った市場シェアを達成することは決してありません.

  • レッスン:

    • 最初に市場に出回る適切な製品 (sh)

    • 人々は新しい機能 (ジョブ制御、コマンド補完) を気に入っていますが、古いスクリプトが機能し続けるとさらに気に入ってしまいます。

    • 編集 :工学部の教授は歴史を科学史家に残すべきです :-)


    Bash には、2 つのまったく異なる機能があります。

    <オール>
  • 立派な殻です。これは、いくつかのクールな csh を統合する 2 つのシェル (もう 1 つは zsh) の 1 つです。 ! のような機能 posix 構文への履歴置換。配列を含む多くの拡張機能があります。

  • FSF/GNU シェルです。オープンソースの世界では、これがある種の名声を与えています。

  • また、常にデフォルトであるとは限らないことも付け加えておきます。 ash bash の間、 /bin/sh としてよく使用されます ash の対話型シェルの可能性があります 「コマンドファイルを実行するだけ」のシェルです。これは ash のためです は小さくて高速で、posix 機能が含まれているため、適切なサブセットです。 ash の使用 対話型シェルには問題がある場合があるためです。たとえば、NetBSD では、すべての機能が組み込まれているため、問題なく動作します。 bash に対して、それは一種の 1 つのシェルです。 社外パッケージです。しかし、Linux ash では 通常、非インタラクティブと見なされるため、履歴なしでコンパイルし、(重要な)行編集なしで、それらの巨大な gnu configure を実行するために使用されるという理論に基づいてコンパイルします

    2 つの貝殻の物語

    シェルの本当の歴史

    更新: シェルが Web 上のあちこちにコピーされたという不正確な歴史があり、人々は当然のことながらそれを信じています。正確なバージョンを提供し、それを裏付けるためにいくつかのリンクを提供するように努めます。

    <オール>
  • 最初のシェルは Bourne シェルではなく、Ken Thompson 自身によって作成され、AT&T がさまざまな大学や政府の研究所に送ったバージョンである V6 で配布されました。これが Unix を有名にしたのです。 <, >, >>, |, & のすべての基本がありました 、しかしそれは単純な goto でした 標準入力をシークする外部プログラムを介して構文を制御します。当時、複雑なシェル スクリプトはありませんでした。後のシェルは、別の fd でコマンド入力を開きます。今日では単純に見えるかもしれませんが、1970 年代のホラー映画ではコンピューティングは地球上で最高のものでした。信じられないかもしれませんが、この古代の貝殻には独自の Twitter ストリームがあり、もちろんホームページもあります。
  • 2 番目の砲弾は csh でした 、書かれています (vi のように) ) UCB の Bill Joy 著。これは GNU readline と NetBSD editline の前のことなので、 ! で履歴を作成するのは完全に合理的だと思われたに違いありません。 構文。 Csh は、今日のシェル機能のほとんどを追加しましたが、csh 構文を使用します。 csh は構文を変更していません 、無償またはその他の方法で。実際には Thompson シェルと下位互換性があり、もともと TS ソース コードが含まれていました。
  • 3 番目のシェルは Bourne シェルで、構文が異なります。 Unix は、UCB と AT&T で並行して開発されていました。このシェルには奇妙なメモリ アロケータがあり (より多くのメモリを使用し、SIGSEGV をトラップし、新しい brk(2) を実行してから再試行したと思います)、新しい Unix ポートでの実行が困難になったため、osh そして csh しばらく人気を維持。インターネットはなく、ライセンスされた SW でした。そのため、その環境では、Stephen Bourne が Joy のシェルについて知らなかった可能性があり、Joy が Bourne について知らなかったことは確かです。 UCB が VAX と今では忘れ去られた Unix/32V のプレリリースを入手したときに、2 つのシェルが最初に出会った可能性があります。 Bill がメモリ割り当てについて不平を言っていたのを覚えています。 両方のシェルが V6 シェルと下位互換性があることに注意してください 、彼らは単に構文をさまざまな方向に拡張しました。
  • 互換性のない複数のシェルがあり、AT&T は Bourne 互換の ksh を追加しました。 .最終的に、csh にはソース コードがある程度利用可能でしたが、AT&T とカリフォルニア大学の間の訴訟で拘束されました。それでも、これらは BSD Unix の全盛期でした。50,000 ドルの料金を払える洗練された企業は、AT&T ライセンスを購入して 4.x BSD ディストリビューションをインストールし、大学はそれを無料で入手しました。
  • 多くの法的および技術的な問題を伴うこの状況では、さまざまな独立した実装が行われました。少なくとも csh で行ったのと同じ数 構文は Bourne シェル構文と同様であり、2 つをマージしたものもあります。少なくとも tcsh ありました 、 zshbash 、および ash . Bourne 構文は「公式」であり、AT&T のリリースの一部でしたが、当時は BSD が非常に重要であり、Sun (最初は BSD) は世界が遭遇するかなりの量の Unix SW を配布しました。
  • USL の訴訟の影響もあり、FSF と Linux にはオープン フィールドがありました。一方、AT&T は、地球上で自分たちよりも規模の大きい数少ない組織 (カリフォルニア州) との争いに成功し、最終的には訴訟に勝てず、最終的に BSD ディストリビューションは法的に固いものになりました。足場。しかし、その頃には Linux と bash はどこにでもあり、今日では BSD はニッチです。
  • 最後に、bash は優れたシェルであり (元の作成者によって個人的に否定されているようですが)、それ自体の成功は称賛に値します。たとえ ash、bash、ksh が構文戦争に勝てなかったとしても、csh は tcsh と zsh によって影を潜めていただろう。

  • @DigitalRoss の発言に追加する

    • Bash は posix-sh の完全なスーパーセットの代替品であり、/bin/sh として呼び出された場合でも posix-sh を完全にエミュレートします。 Posix-sh は、共通分母シェルとしての商用 UNIX システムの「標準」でした。つまり、そこから始まり、その上に構築されるものは、多くのことから始まります。

    Linux
    1. Linux –なぜSuだけでなくSuを使用するのですか?

    2. Bash翻訳ファイルにすべてのエラーテキストが含まれていないのはなぜですか?

    3. Linux –Setuidが機能しないのはなぜですか??

    1. Linux/オープンソースディストリビューションの簡単な歴史

    2. フォルダ内のすべてのシェル スクリプトを実行する

    3. Bash(Linux シェル)で Ctrl + V が貼り付けられないのはなぜですか?

    1. Linuxを使用してヨガスタジオを管理する理由

    2. AntergosLinuxに恋をした理由

    3. ほとんどの Linux ディストリビューションで Perl がデフォルトでインストールされるのはなぜですか?