Linuxにはどのような種類のシェルがありますか?
シェルは、Linuxユーザーセッションの重要な部分です。Linuxでは、さまざまなタイプのシェルが提供され、タスクを達成するために使用されます。各シェルには独自の特性があります。そのため、特定の要件に対して他のシェルよりも優れている場合が多くあります。
これにより、Linuxで利用可能なさまざまなタイプのシェルについて知識を持つことが重要になります。このチュートリアルでは、シェルとは何か、なぜ重要なのかについて説明します。
さらに、Linuxで異なる種類のシェルについて調査し、その機能と特性を理解する予定です。
シェルとは何であり、なぜ必要なのか?
ユーザーがシステムにログインするか、コンソールウィンドウを開くたびに、カーネルは新しいシェルインスタンスを実行します。カーネルはどんなオペレーティングシステムにおいても中核となる要素です。
システムリソースの適切な利用を確保し、プロセスの管理および実行を担当しています。
シェルは、ユーザーとカーネルの間のインターフェースとして機能するプログラムです。ユーザーはシェルを通じてカーネルにコマンドを与え、そのレスポンスを受け取ることができます。シェルを通じて、カーネル上でプログラムやユーティリティを実行することができます。そのため、本質的には、システム上で他のプログラムを実行するために使用されるプログラムです。
カーネルとのやり取りが可能なことは、シェルを強力なツールにします。カーネルとのやり取りができないと、ユーザーは自分のマシンのオペレーティングシステムが提供するユーティリティにアクセスできません。
Linux環境で利用可能な主要なシェルを理解しましょう。
Linuxにはさまざまな種類のシェルがあります。
もし今、カーネルとシェルの意味が理解できて、なぜシェルがLinuxシステムにとって重要なのかがわかったなら、次は利用可能なさまざまな種類のシェルについて学びましょう。
それぞれのシェルには他のシェルよりも特定の使用方法において非常に効率的な特性があります。したがって、Linuxにおける異なる種類のシェルとその特性、特徴について議論しましょう。
1. ボーンシェル(sh)
AT&Tベル研究所でスティーブ・ボーンによって開発されたBourneシェルは、最初のUNIXシェルとして知られています。shとして表示されます。そのコンパクトな性質と高速な操作速度により、人気を獲得しました。
これがSolaris OSのデフォルトシェルになった理由です。また、すべてのSolarisシステム管理スクリプトのデフォルトシェルとしても使用されています。シェルスクリプトについての読み始めはこちらから。
ただし、Bourneシェルにはいくつかの重大な欠点があります。
- It doesn’t have in-built functionality to handle logical and arithmetic operations.
- Also, unlike most different types of shells in Linux, the Bourne shell cannot recall previously used commands.
- It also lacks comprehensive features to offer a proper interactive use.
ボーンシェルの完全なパス名は、/bin/shおよび/sbin/shです。デフォルトでは、ルートユーザーには#が使用され、非ルートユーザーには$が使用されます。
2. GNU Bourne-Again Shell(bash)
GNU Bourne-Againシェル(通称:Bashシェル)は、Bourneシェルと互換性を持つように設計されました。これには、KornシェルやCシェルなどのさまざまなタイプのLinuxのシェルから便利な機能が組み込まれています。
ボーンシェルとは異なり、矢印キーの助けを借りて以前に使用したコマンドを自動的に呼び出して編集することができます。
GNU Bourne-Againシェルの完全なパス名は/bin/bashです。デフォルトでは、ルートユーザーのプロンプトはbash-VersionNumber#、非ルートユーザーのプロンプトはbash-VersionNumber$を使用します。
3. Cシェル(csh)
Cシェルはビル・ジョイによってカリフォルニア大学で作成されました。cshとして示されます。Cプログラミング言語と似た構文や算術演算の内蔵サポートなど、便利なプログラミング機能を取り入れるために開発されました。
さらに、Bourneシェルなどの異なるタイプのLinuxシェルに欠けていたコマンド履歴を組み込みました。 Cシェルのもう一つの特徴は、「エイリアス(別名)」です。
Cシェルの完全なパス名は/bin/cshです。デフォルトでは、ルートユーザーのプロンプトはホスト名#、非ルートユーザーのプロンプトはホスト名%を使用します。
4. コーンシェル(ksh)
コーエンシェル(Korn shell)は、AT&Tベル研究所のデイビッド・コーエン(David Korn)によって、Bourneシェルを改良するために開発されました。kshとして表示されます。コーエンシェルは、本質的にはBourneシェルのスーパーセットです。
ボーンシェルがサポートしている機能に加えて、新しい機能も提供しています。算術演算の組み込みサポートが可能であり、Cシェルに似たインタラクティブな機能も提供しています。
Korn シェルは Bourne シェルのために作られたスクリプトを実行する一方、C プログラミング言語に似た文字列、配列、関数の操作を提供します。また、C シェルで書かれたスクリプトもサポートしています。さらに、Korn シェルは C シェルを含む Linux 上の多くの異なるタイプのシェルよりも高速です。
Kornシェルの完全なパス名は、/bin/kshです。デフォルトでは、ルートユーザーには#、非ルートユーザーには$のプロンプトが使用されます。
5. ゼット シェル(zsh)
Zシェルまたはzshは、カスタマイズのための多くの改善点を備えたshシェルの拡張です。もし現代的なシェルでありながら、より多くの機能を備えたシェルをお探しの場合は、zshシェルがおすすめです。
Zシェルの注目すべき特徴には、以下があります:
- Generate filenames based on given conditions
- Plugins and theming support
- Index of built-in functions
- Command completion
- and many more…
このチュートリアルで議論したLinuxの異なるシェルを以下の表にまとめましょう。
Shell | Complete path-name | Prompt for root user | Prompt for non root user |
Bourne shell (sh) | /bin/sh and /sbin/sh | # | $ |
GNU Bourne-Again shell (bash) | /bin/bash | bash-VersionNumber# | bash-VersionNumber$ |
C shell (csh) | /bin/csh | # | % |
Korn shell (ksh) | /bin/ksh | # | $ |
Z Shell (zsh) | /bin/zsh | <hostname># | <hostname>% |
まとめる
シェルはLinuxユーザーにとって、もしくは最も強力なツールの一つです。シェルがなければ、システムにインストールされたカーネルの提供する機能や機能性を実際に活用することはほぼ不可能です。
Linuxにおいては、よく使用されるシェルの種類についてのみカバーしましたが、探索する価値のある他の多くのシェルの種類も存在します。
このチュートリアルがシェルのコンセプトとLinuxのさまざまなタイプのシェルの特性を理解するのに役立ったことを願っています。ご意見、質問、提案がありましたら、以下のコメントでお気軽にお問い合わせください。