はじめに
Linux には、いくつかの異なるシェルが付属しています。ディストリビューションにはデフォルトのシェルがありますが、ユーザーは別のタイプに変更したり、新しいシェルをインストールしたりできます。
デフォルトのシェルを変更しようとしている場合、利用可能なさまざまなタイプを知っておくと、可能なオプションの概要を明確に把握するのに役立ちます。
この記事では、8 つの異なる Linux シェルの重要性と機能を紹介します。
Linux シェルとは何ですか? なぜ重要なのですか?
シェル コマンドを解析してオペレーティング システムに送信するコマンド ライン インタープリタ プログラムです。このプログラムは、オペレーティング システムの対話型インターフェイスとカーネルの最外層 (またはシェル) を表します。ユーザーとプログラムがシグナルを送信し、オペレーティング システムの低レベル ユーティリティを公開できるようにします。
端末プログラム (または端末エミュレーター) は、システムのユーティリティとの対話を可能にします。端末で ls や cat などのコマンドを実行すると、シェルは対応するプログラムを解析、評価、検索、および実行します (見つかった場合)。
Linux シェルの種類
Linux は、独自の機能を通じてさまざまな問題に対処するためのさまざまなシェル タイプを提供します。 Unix とともに開発されたシェルは、開発が進むにつれて、互いに機能を借用することがよくありました。
以下は、さまざまな砲弾の種類とその機能の概要です。 .
1.ボーン・シェル (sh)
ボーンシェル 1979 年にリリースされた、Unix システムの最初のデフォルト シェルです。シェル プログラム名は sh です。 、従来の場所は /bin/sh です .プロンプトが $ に切り替わります 、ルート プロンプトは # です .
コンパクトであるため、Bourne シェルはすぐに人気を博しました。 そして速い .ただし、 sh 次のようないくつかの標準機能がありません:
- 論理的および算術的拡張
- コマンド履歴。
- オートコンプリートなどのその他の包括的な機能
最新の Unix ライクなシステムには /bin/sh があります 実行可能ファイル。プログラムは Bourne シェルを起動しませんが、デフォルトのシステム シェルを指す実行可能ファイルとして機能します。 .
ほとんどのシステムでは、ハード リンクまたはシンボリック リンクは bash を指しています。 、Ubuntu と Debian では、リンクは dash です .どちらの場合も、リンクは Bourne シェルを可能な限り模倣しています。
2. C シェル (csh)
C シェル (csh ) は 1970 年代後半からの Linux シェルで、その主な目的はインタラクティブな使用を改善し、C 言語を模倣することでした。 Linux カーネルは主に C で記述されているため、シェルはシステム全体でスタイルの一貫性を提供することを目的としています。
C シェル実行可能ファイルへのパスは /bin/csh です .プロンプトは %
を使用します 通常のユーザーと #
の場合 root ユーザー用。
新しいインタラクティブ機能が含まれています:
- 前のコマンドの履歴
- プログラムのユーザー定義のエイリアス
- 相対ホーム ディレクトリ (~ ).
- 組み込み式の文法。
C シェルの主な欠点は次のとおりです。
- 構文の不一致。
- 標準入出力 (stdio) ファイル ハンドルまたは関数はサポートされていません。
- 完全に再帰的ではないため、複雑なコマンド処理が制限されます。
C シェルは、Bourne シェルに比べて読みやすさとパフォーマンスが向上しています。 csh のインタラクティブ機能とイノベーションは、その後のすべての Unix シェルに影響を与えました。
3. TENEX C シェル (tcsh)
TENEX C シェル (tcsh ) は C シェル (csh) の拡張です。 ) は 1980 年代初頭に合併しました。シェルは csh と後方互換性があり、TENEX OS から借用した追加の機能と概念があります。
TENEX C シェルの実行可能パスは /bin/tcsh にあります .ユーザー プロンプトは hostname:directory>
です ルート プロンプトは hostname:directory#
ですが、 . Mac OS の初期バージョンと FreeBSD のデフォルトのルート シェルは tcsh を使用します。
シェルのその他の機能は次のとおりです。
- 高度なコマンド履歴
- プログラム可能なオートコンプリート。
- ワイルドカード マッチング。
- ジョブ コントロール。
- 組み込みの where コマンド。
tcsh は C シェルの拡張であるため、拡張バージョンには多くの欠点が残ります。
4.コーンシェル (ksh)
コーンシェル (ksh ) は、1980 年代初頭に開発された Bourne シェル (sh) に基づく Unix シェルおよび言語です。場所は /bin/ksh にあります または /bin/ksh93 、プロンプトは Bourne シェルと同じですが ($
ユーザーと #
の場合 ルート用)
シェルは、C シェルと Bourne シェルの機能を実装し、対話型コマンドとプログラミング機能の両方に焦点を当てることを目指しています。 KornShell には、次のような独自の新機能が追加されています。
- 組み込みの数学関数と浮動小数点演算
- オブジェクト指向プログラミング
- 組み込みコマンドの拡張性
- Bourne シェルと互換性があります。
このシェルは、C シェルと Bourne シェルの両方よりも高速です。
5. Debian Almquist シェル (ダッシュ)
Debian Almquist シェル (ダッシュ ) は、1990 年代後半に Debian に移植され、名前が変更された Almquist シェル (ash) から開発された Unix シェルです。
Dash は、Ubuntu および Debian のデフォルト シェルとして有名です。シェルは最小限で POSIX に準拠しているため、OS 起動スクリプトに便利です。
実行可能パスは /bin/dash です 、/bin/sh に加えて /bin/dash を指す Ubuntu と Debian で。デフォルトおよびルート ユーザー プロンプトは、Bourne シェルと同じです。
ダッシュ機能には以下が含まれます:
- 実行速度は、bash や他のシェルよりも最大 4 倍高速です。
- 必要なディスク容量、CPU、および RAM は、他の方法と比べて最小限です。
主な欠点は、dash が bash と互換性がないことです。ダッシュに含まれていない機能は「バシズム」として知られています。したがって、bash スクリプトを正常に実行するには、さらに bashisms を作り直す必要があります。
6. Bourne Again シェル (bash)
ボーン アゲイン シェル Bourne シェル (sh shell プログラムは、多くの Linux ディストリビューションおよび以前のバージョンの macOS のデフォルトのログイン シェルです。
シェル名は bash に短縮されます 、場所は /bin/bash です . Bourne シェルと同様に、bash プロンプトは $
です。 通常のユーザーと #
の場合
Bash には、Bourne シェルにはない機能が導入されています。その一部には次のものがあります。
- ブレースの拡張。
- コマンド補完。
- 基本的なデバッグとシグナル処理
- コマンド履歴。
- bash if ステートメントや bash case ステートメントなどの条件付きコマンド
- ヘレドックのサポート
注: 一部の機能は Bash 固有のものではなく、他のシェルから借用したものです。
bash は Bourne シェルのスーパーセットであるため、ほとんどの sh スクリプトは追加の変更なしで bash で実行されます。
7. Z シェル (zsh)
Z シェル (zsh ) は、1990 年代初頭に Bourne シェルの拡張機能として作成された Unix シェルです。機能豊富なシェルは、ksh と tcsh からアイデアを借りて、適切に構築された使用可能な代替手段を作成します。
実行可能な場所は /bin/zsh にあります .プロンプトは [email protected] location %
です 通常のユーザーと hostname#
の場合 root ユーザー用。 Z シェルは、Kali Linux および Mac OS のデフォルトのシェルです。
zsh に追加されたいくつかの新機能は次のとおりです。
- 実行中のすべてのシェル セッション間で共有される履歴
- 配列と変数の処理が改善されました。
- スペル修正とコマンド名の自動入力
- さまざまな互換モード。
- プラグインによる拡張性
Oh My Zsh フレームワークによるコミュニティ主導のサポートにより、シェルは高度な構成とカスタマイズが可能です。
8.フレンドリー インタラクティブ シェル (魚)
フレンドリーなインタラクティブ シェル (魚 ) は、使いやすさを重視して 2000 年代半ばにリリースされた Unix シェルです。機能豊富なシェルは追加の構成を必要としないため、最初からユーザーフレンドリーになります。
デフォルトの実行可能パスは /usr/bin/fish です .ユーザー プロンプトは [email protected] location>
です 、ルート プロンプトは [email protected] location#
です .
シェルの機能は次のとおりです。
- 現在のディレクトリ履歴に基づく高度な提案/タブ補完
- 便利な構文の強調表示と説明的なエラー メッセージ
- ウェブベースの設定
- 検索オプション付きのコマンド履歴
fish の主な欠点は、POSIX に準拠していないことです。ただし、開発者は POSIX から欠陥のある設計を改善することを目指しています。
結論
この記事でいくつかの異なるシェル タイプについて読んだ後は、使用可能な Linux シェルの概要をよりよく理解できます。特定のユース ケース用に他のシェルが存在し、すべてのシェル タイプが異なる問題に対処します。