ほとんどの Linux ディストリビューションにはデフォルトで bash シェルが含まれていますが、別のシェル環境に切り替えることもできます。 Zsh は特に人気のある代替シェルで、他にも ash、dash、fish、tcsh などのシェルがあります。しかし、違いは何でしょうか?なぜこんなにたくさんあるのでしょうか?
貝殻は何をするのですか?
コマンド ラインでサインインするか、Linux 上でターミナル ウィンドウを起動すると、システムはシェル プログラムを起動します。シェルは、コマンド ライン環境を拡張する標準的な方法を提供します。必要に応じて、デフォルトのシェルを別のシェルに交換できます。
最初のシェル環境は、ベル研究所で開発され 1971 年にリリースされた Thompson Shell でした。それ以来、シェル環境はこのコンセプトに基づいて構築され、さまざまな新機能、機能性、および速度の向上が追加されています。
たとえば、Bash は、 コマンドとファイル名の補完 、 高度なスクリプト機能 、 コマンド履歴 、設定可能な色、コマンド エイリアス、および最初のシェルがリリースされた 1971 年には利用できなかったその他のさまざまな機能を提供します。
シェルは、さまざまなシステム サービスによってバックグラウンドでも使用されます。 Linux ディストリビューションには、シェル スクリプトとして記述された多くの関数が含まれています。これらのスクリプトは、シェル環境を通じて実行されるコマンドおよびその他の高度なシェル スクリプト機能です。
Bash につながるシェル: sh、csh、tsh、および ksh
現代のシェルの最も著名な祖先は、AT&T のベル研究所で働いていた作成者 Stephen Bourne にちなんで名付けられた Bourne シェル — 「sh」としても知られる — です。 1979 年にリリースされたこのツールは、コマンド置換、パイプ、変数、条件テスト、ループなどの機能をサポートしているため、 Unix のデフォルトのコマンド インタプリタになりました。ユーザー向けのカスタマイズはあまり提供されておらず、エイリアス、コマンド補完、シェル関数などの最新機能もサポートしていませんでした (ただし、この最後の機能は最終的に追加されました)。
C シェル、または「csh」は、1970 年代後半にカリフォルニア大学バークレー校の Bill Joy によって開発されました。エイリアス (長いコマンドのショートカット)、ジョブ管理機能、コマンド履歴など、ユーザーがシステムを制御できる対話型要素が多数追加されました。これは、Unix オペレーティング システム自体が書かれている C プログラミング言語をモデルにして作られました。これは、Bourne シェルのユーザーがコマンドを入力できるように C を学習する必要があることも意味しました。さらに、csh にはかなりの数のバグがあり、ユーザーと作成者の両方が長期間にわたってそれらを解決する必要がありました。 Bourne シェルは非対話型コマンドの処理に優れていたため、スクリプトには Bourne シェルを使用するようになりましたが、通常の使用には C シェルを使い続けました。
時間が経つにつれて、多くの人が C シェルのバグを修正し、機能を追加し、「tcsh」として知られる csh の改良版が完成しました。しかし、csh は依然として Unix ベースのコンピュータのデフォルトであり、いくつかの非標準機能が追加されていました。 Bell Labs の David Korn は、Bourne シェルの言語との下位互換性を持ちながら、csh シェルの多くの機能を追加することで状況を改善しようとした KornShell (「ksh」) に取り組みました。 1983 年にリリースされましたが、独自のライセンスの下にありました。 2000 年代まではフリー ソフトウェアではなく、さまざまなオープンソース ライセンスの下でリリースされました。
バッシュの誕生
Unix 用のポータブル オペレーティング システム インターフェイス (POSIX) は、多忙な独自の csh 実装に対するもう 1 つの対応策でした。これは、(とりわけ) コマンド解釈の標準を作成することに成功し、最終的には KornShell の多くの機能を反映しました。同時に、GNU プロジェクトは、無料の Unix 互換オペレーティング システムを作成しようとしていました。 GNU プロジェクトは、無料オペレーティング システムの一部となるフリー ソフトウェア シェルを開発し、それを「Bourne Again Shell」または「bash」と名付けました。
Bash は 1989 年の最初のリリース以来、数十年にわたって改良されてきましたが、現在でもほとんどの Linux ディストリビューションでデフォルトのシェルとして使用されています。これは Apple の macOS のデフォルト シェルでもあり、 Microsoft の Windows 10 にもインストールできます 。
新しいシェル: ash、dash、zsh、fish
それ以来、Linux コミュニティは Bash に落ち着きましたが、28 年前に Bash が初めてリリースされたとき、開発者は新しいシェルの作成をやめませんでした。
Kenneth Almquist は、Almquish シェル、A シェル、「ash」、または単に「sh」として知られる Bourne シェル クローンを作成しました。また、POSIX と互換性があり、Unix の別のブランチである BSD のデフォルト シェルになりました。 Ash シェルは bash よりも軽量であるため、組み込み Linux システムで人気があります。 BusyBox がインストールされている root 化された Android スマートフォン 、または BusyBox ソフトウェア スイートを備えたその他のデバイスをお持ちの場合は、ash のコードを使用しています。
Debian は Ash に基づいてシェル環境を開発し、それを「dash」と呼びました。 POSIX 準拠で軽量になるように設計されているため、Bash よりも高速ですが、すべての機能を備えているわけではありません。 Ubuntu は、非対話型タスクのデフォルト シェルとしてダッシュ シェルを使用し、バックグラウンドで実行されるシェル スクリプトやその他のタスクを高速化します。ただし、Ubuntu は依然としてインタラクティブ シェルに bash を使用しているため、ユーザーは依然としてフル機能のインタラクティブ環境を利用できます。
最も人気のある新しいシェルの 1 つは、Z シェル、つまり「zsh」です。 1990 年に Paul Falstad によって作成された zsh は、bash にある機能に加えて、それ以上の機能を含む Bourne スタイルのシェルです。たとえば、zsh には、スペルチェック、ログイン/ログアウトを監視する機能、バイトコードなどの組み込みプログラミング機能、構文内の科学的表記法のサポート、浮動小数点演算の許可などの機能があります。
もう 1 つの新しいシェルは、2005 年にリリースされた Friendly Interactive Shell (「フィッシュ」) です。このシェルには、学習しやすいように設計された独自のコマンドライン構文がありますが、Bourne シェルや C シェルから派生したものではありません。興味深いアイデアではありますが、fish の使用を通じて学んだことが、bash やその他の Bourne 由来のシェルの使用に必ずしも役立つとは限りません。
どれを選ぶべきですか? (Zsh が人気の理由)
シェルを選択する必要はありません。オペレーティング システムがデフォルトのシェルを選択しますが、その選択はほとんどの場合 bash です。 Linux ディストリビューション、あるいは Mac の前に座れば、ほぼ常に bash シェル環境が得られます。 Bash にはかなりの高度な機能がありますが、シェル スクリプトをプログラムしない限りそれらを使用することはおそらくないでしょう。
組み込み Linux システムまたは BSD システムでは、最終的には Ash シェルを使用することになります。ただし、ash は Bourne ベースのシェルであり、bash とほぼ互換性があります。 bash の使用で得た知識はすべて、ash シェルまたはダッシュ シェルの使用に移されますが、一部の高度なスクリプト機能はこの軽量シェルでは使用できません。
zsh を含め、ほぼすべてのシェルは Bourne ベースであり、同様に動作します。
zsh が人気があるのはそのためです。この新しいシェルは bash と互換性がありますが、より多くの機能が含まれています。 zsh シェルは、組み込みのスペル修正、改善されたコマンド ライン補完、シェルのプラグインとして機能するロード可能なモジュール、コマンドだけでなくコマンド ライン上でファイル名や他のものにエイリアスを付けることができるグローバル エイリアスを提供します。より多くのテーマのサポート。これは bash に似ていますが、コマンド ラインで多くの時間を費やす人には便利な追加機能、追加機能、構成可能なオプションが多数あります。
bash に慣れている場合は、別の構文を学ばなくても zsh に切り替えることができます。追加の機能が得られるだけです。 zsh に慣れている場合は、別の構文を学ばなくても bash に切り替えることができます。ただし、それらの機能にはアクセスできません。
「 Oh My ZSH 」は、zsh プラグインをより簡単に有効化し、事前に作成されたテーマを切り替えて、調整に何時間も費やすことなく zsh シェルをすばやくカスタマイズできるようにするツールです。
他にも貝殻はあります。たとえば、tcsh シェルはまだ存在しており、依然としてオプションです。 FreeBSD は、デフォルトのルート シェルとして tsch を使用し、デフォルトの対話型シェルとして ash を使用します。 C プログラミングを定期的に使用する場合は、tsch の方が適しているかもしれません。ただし、一般的に使用されている bash や zsh ほどではありません。
シェルを切り替える方法
新しいシェルに切り替えて試すのは簡単です。 Linux ディストリビューションのパッケージ マネージャーからシェルをインストールし、コマンドを入力してシェルを起動するだけです。
たとえば、Ubuntu で zsh を試したいとします。次のコマンドを実行してインストールし、起動します。
sudo apt install zsh
zsh
その場合、zsh シェルに座ることになります。シェルで「
exit
」と入力してシェルを終了し、現在のシェルに戻ります。
これは単なる一時的なものです。新しいターミナル ウィンドウを開くか、コマンド ラインでシステムにサインインすると、デフォルトのシェルが表示されます。サインイン時に表示されるシェル (ログイン シェルと呼ばれる) を変更するには、通常、
chsh
(「シェルの変更」) コマンドを使用します。
このコマンドを使用するには、まず what コマンドを使用してシェルへのフル パスを検索する必要があります。たとえば、zsh シェルに変更したいとします。次のコマンドを実行します。
どのzsh
Ubuntu では、これは zsh バイナリが /usr/bin/zsh に保存されていることを示します。
次のコマンドを実行し、パスワードを入力すると、新しいログイン シェルを選択するように求められます。
シュシュ
上記のコマンドによれば、
/usr/bin/zsh
と入力します。
chsh
コマンドを実行して元に戻すまで、zsh シェルがデフォルトになります。





