Shellはオペレーションシステムに命令を出すソフトウェアのことを指します。カーネルに命令を出し、出力結果を受け取る役割を持っており、OSの入出力という2つの役割があります。簡単に言うと、人とパソコンの仲介役がShellです。
パソコンは、機械語と呼ばれる人には理解しにくい言語で動いています。その為、人がプログラミングしやすいように作られたのがCやJavaなどの言語です。言語を使用する時はコンパイルし、機械語に変換した上で実行しています。Shellの場合は、直接OSに働きかけるので、コマンドプロンプトのように単純な処理を最速で行えるのがメリットです。Shellに命令を送る際はシェルスクリプトを使い、if文のような条件分岐や変数などを記載できます。
Shellは他の言語とは違いOSに直接指示を送るので、パソコン内部のシステムバックアップデータの取得やテキストファイルの加工、ディレクトリ操作が得意です。また、Shellには種類があり、それぞれ特徴を持っています。
- sh
1977年に作られた最初のShellです。全ての基本機能を搭載しています。このShellからアップデートし、様々な種類に派生しました。基本的な機能しか備わっていない為、使われる機会がほとんどありません。シェルスクリプトでコマンドに「/sh」の文字がある時は、shを使ってOSに指示を出しています。
- bash
shからアップデートしたShellです。コマンド履歴やコマンド名の自動補完機能が追加されています。
- ksh
shからアップデートしたShellです。bashと同じようにコマンド履歴やコマンド名の自動補完機能があります。bashと名前は違いますが、中身自体はほぼ同じです。
- ash
Shellの中でも軽量なのが特徴です。メモリを取らないので、組み込みLinuxに利用されます。メモリ負荷は小さいですが、自動補完機能はありません。
- dash
POSIX互換を得意とするUnixのShellです。基本機能はashと同じで、軽量なので速い処理速度が特徴。
- csh
名前の通り、C言語のような書き方ができるShellです。馴染みのある書き方ができるので覚えやすいのが特徴。shからアップデートしたShellではありません。その為、記載方法が大きく異なります。
- tcsh
cshからアップデートしたShellです。コマンドライン編集機能が追加されており、履歴編集などの機能やC言語ソースコードの文法チェックに使用されています。
- zsh
macOSなどでデフォルト設定されているShellです。容量は多いですが、cshとshの機能を全て集約したShellです。