Linuxでbashが標準になっているのはなぜですか?


19

最新のLinuxディストリビューションには、デフォルトのシェルとしてbashが含まれていますが、他の(おそらく)より良いシェルもあります。

これは、誰も変更したくない歴史的な残り物なのか、bashを最初の選択とする正当な理由があるのか​​を理解しようとしています。


19
ほとんどのコンピューターはMS Windowsがインストールされた状態で販売されていますが、他にもおそらく間違いなく優れたOSがあります。
チョロバ

Bashは簡単です。通常、ユーザーが望んでいることはすべて実行できます。簡単に切り替えることができます。デフォルトでscshを使用するのは楽しいことではありません。
CND

4
BashはUNIX標準のOSS実装です/bin/sh。これは、「通常の」UNIX-esのデフォルトシェルです。
Jan Marek

これはwikiのリンクを知っていますが、あなたの質問に深く答えます。1つのシェルが他のシェルよりも優れているものen.wikipedia.org/wiki/Unix_shell
whoami

6
(ほぼ間違いなく)より良く定義してください。私bashはそれをよく知っており、どこにでもあり、必要なことをすべて簡潔かつ比較的簡単に行い、読みやすく、bashスクリプトの作成方法を知らなくても人々がある程度理解できるので、最高のシェルだと思います。シェルには他に何が必要ですか?多くのプログラミング機能が必要な場合は、シェルを誤って使用しています。
nicerobot

回答:


18

簡単な答えは、Linuxは実際にはGNU / Linuxであるためです。カーネルのみがLinuxですが、Unixのような環境を提供するユーティリティの基本コレクションはGNUによって提供され、GNUシェルはbashです
私が言ったように、それは簡単な答えです;)

いくつかのコメントを追加するために編集しました...
私はUnixの歴史家ではないということで接頭辞を付けてください 。

いくつかの点で、まず、bashはシェルのキッチンシンクです。emacsは編集者向けです。
bashがリリースされた時点では、無料のksh実装はありませんでした。tcshは無料のcshの代替品でしたが、ストールマンはシェルプログラミングのcshに反対しました。
対話型のシェルbashには、セッションごとの履歴の保存とともに、優れた履歴/コマンドの呼び出しがありました。これは、シェルプログラミング用のsh、bsh、kshに置き換わるものであり、適切なインタラクティブシェルになりました。
雪だるま式に転がる雪玉のように、bashは勢いとサイズを増しています。

はい、他にもたくさんのシェルがあります。個々の目的や好みにより適したシェルですが、シェルバッシュの周りの1つのシェルにはまともな仕事があり、20年以上にわたって多くの注目を集めてきました。


わかります。ただし、ほとんどのディストリビューションには、他の多くの非GNUソフトウェアが含まれています。チョロバがWindowsが支配的なOSであるとコメントしたように、bashが使用されているという理由だけでbashが使用されているように思えます。ただし、数十年の間、Windowsはハードウェアサポート(ドライバー)が優れていたため、他のOSへの切り替えが困難でした。ユーザーが切り替えられないようにするためにBashが提供する独自の機能を確認できませんか?
ミラノバブシュコフ

1と短く、簡単な答え:-)のため@bdowning良い1
ニキルMulley

2
bash固有の機能を使用するスクリプトが多すぎるため、@MilanBabuškovBashをインストールする必要があります。その仮定から始めたら、追加のシェルを正当化する必要があります。Dashは、起動時間を短縮する計画の一環として、Ubuntuのようなdistoに含まれています。bashが対話型シェルとして「十分」であることを考えると、他のシェルはまだデフォルトのパッケージロードアウトの一部となるほど強力な引数を与えていません。
-ssokolow

12

Bashにはいくつかの潜在的な競合他社があります。

  • Zshにはより高度なインタラクティブ機能がありますが、スクリプティングに関してはいくつかの癖があります(以前ほどではありません)。Linuxが初期段階にあった1990年代初期から中期にかけて、zshは事実上不明でした。
  • Kshは、1980年代半ば以降の商用ユニセのデファクトスタンダードでしたが、2000年まではプロプライエタリソフトウェアであったため、Linuxではオプションではありませんでした。また、bshと比較して、kshにはsubparコマンドラインエディション機能がありました。
  • kshの無料クローンであるPdkshはオプションでしたが、あまり知られておらず、コマンドラインエディションの機能が貧弱でした。(Pdkshは、一部のBSDでまだ使用されていますが、ATT kshは無料であるため、あまりアクティブなプロジェクトではなくなりました。)
  • 一部のディストリビューションは、灰のバリアントをとしてインストールし/bin/shます。Ash(つまり、ashと呼ばれる緩やかなシェルファミリのいずれか)は、インタラクティブ機能を持たず、小さくて高速になるように設計されています(スクリプトの編集専用です)。灰の復活は比較的最近です。1990年代には、既存のバリアントには多くの機能が欠けていました。
  • Tcshは、zshが登場するまで最も高度なインタラクティブシェルでしたが、shと互換性がなく、スクリプト作成にはあまり適していません

さらに、bashは公式のGNUシェルであり、Linuxシステムは実際にはGNU / Linuxです。最も有名な部分であるLinuxカーネルがそうでなくても、コアプログラムの多くはGNUから来ています。それが事実上の標準になったとき、bashはよく知られており、公式のステータスを持ち、まともな機能セットを持っていました。


私が理解しているように、POSIX標準は/ bin / shにあるBourneシェルに必要な機能を指定しており、ほとんどのLinuxディストリビューションはBourneシェルを使用するために記述されたシェルスクリプトに依存します。BASHは基本的にBourneシェルの拡張バージョンであり、/ bin / shは実際には/ bin / bashへのリンクであり、実行するとBourneシェル機能のみで実行されます。
bgvaughan

@bgvaughan一部のディストリビューションはbashを出荷し/bin/sh、他のディストリビューションはashを出荷します。例えばUbuntuのが/bin/shあったdashしばらくの間(灰のフォークのDebianによって維持しました)。Bashにはより多くの機能があり、ashはより小さく、高速です。どちらもPOSIXに準拠しています(少なくとも実際には十分に準拠しています)。
ジル 'SO-悪である停止

4

最も簡単な答えは?何かがデフォルトである必要があるためです。最も賢明なデフォルトは、ほとんどのユーザーがすでに慣れているデフォルトです。その点で、Bashは良い選択です。誰もが自分の世界で最高のものを選択する自由を持っています。ほとんどの人は、必要なことを常に行っている場合、デフォルトを使用することを選択します。


3

DOSから(doskeyがインストールされている状態で)カーソルを上下に移動するだけで最後のコマンドを呼び出す機能を本当に失いました。BASHは、* nixでこれを実装した最初のシェルであるIMOでした。

したがって、おそらくその世代以降のほとんどの人はbashが好きでした。


1990年代までコンピューターを使用していませんでしたがtcsh、矢印キーを使用してシェル履歴を前後にナビゲートする最初の* nixシェルであるという仮定の下にありました。
アンソニーG-モニカの正義

1

他のすべての答えは素晴らしいですが、実用的な観点から:なじみのないシステムの前に座って(またはリモートでアクセスして)何かをする必要がある場合、最も古いシステム以外のすべてでbashが利用できると期待できます。私は先に進み、物事を成し遂げることができます。

他の回答や質問で指摘されているように、他にも多くのシェルがあります(zshについて多くの良いことを聞いていますが、試したことはありません)。しかし、それらは構文や時には使用されるコマンドに関して異なります物事を成し遂げるために。何かをしたいだけなら、bashは別のシェルに適応することなく、十分にトリッキーです。

また、一般的に役立つシェルスクリプトを作成するときは、bash用に作成します。システムに依存しないことをしないように非常に注意すると、ほぼどこでも実行できることを知っています。


1

慣性。

Linux(GNU / Linux、必要に応じて)システムが登場し始めたとき、Bashはたまたま最も簡単に利用できる無料のシェルでした。GNUプロジェクトからのものであるという事実は害を与えませんでした。

まだデフォルトのシェルである理由については、変更する十分な理由はありませんでした。他のシェルの方が優れている場合でも、異なるディストリビューション間で同じデフォルトのログインシェルを使用することには利点があり、他の誰かに切り替えることに全員(Debian、Red Hat、Suseなど)を同意させることは困難です。

そして、結局のところ、それはデフォルトに過ぎません。すべてのユーザーがchshログインシェルの変更に使用できます。全員のデフォルトを変更する必要はありません。

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