本記事では、プログラミング初心者向けに向けて「シェルとは何か」「シェルを学習するメリットとデメリット」などについて、分かりやすく解説いたします!
なお、本記事を執筆したのは、プログラミングスクール「アキバ・テックドリーム・アカデミー」(以下、テクドリ)の運営企業であるメディアファイブ株式会社(以下、メディアファイブ)に所属している現役のITエンジニア職の社員です。
シェルとは
シェル(Shell)とは、ユーザーが入力したコマンドをOSへと伝えるプログラムです。
OSの基本機能の役割を担うソフトウェアのことをカーネルといいますが、ユーザーから見てカーネルを包み込む貝殻(shell)のように見えることから名付けられました。
シェルスクリプト
シェルと混同しやすい用語としてシェルスクリプトがあります。
シェルスクリプトとは、シェルによる一連の命令をシェルコマンドにて記述したテキストファイルです。
また、スクリプト言語の定義が”プログラマーにとって比較的簡単に記述や実行ができる言語”であることから、シェルスクリプトはシェルを操作するためのプログラミング言語の1種ともいえます。
シェルの仕組み
ユーザーがOSに対して何らかの操作を行いたい場合、コマンドラインからテキストベースのコマンドを入力します。シェルはコマンドを受け取りカーネルへと伝達します。命令を受け取ったカーネルは処理を実行し、実行結果をシェルへと返します。シェルが受け取った結果を画面上へ表示することで、ユーザーは実行結果を確認することができます。
シェルの特徴
シェルの特徴として下記が挙げられます。
コンパイルが不要
シェルはコンパイルが不要なコマンド言語です。
実行するにあたって変換作業を行う必要がないため、開発にかかる手間を削減することができます。
柔軟性や拡張性に優れている
シェルは多くのOSで普及しているため、異なるOS間でのデータ操作やファイル移行を比較的容易に行うことが可能です。
また、他のプログラミング言語で記述されたプログラムと組み合わせることができるため、実装できる機能の幅が広がります。
シェルの使用例
シェルを利用することで、OS操作を自動化および効率化することができます。
シェルの使用例として下記が挙げられます。
- システムやデータのバックアップ
- ファイルやディレクトリの操作
- ファイルやデータベースからのデータ抽出
- ソフトウェアのインストールおよびアップデート
シェルの種類
シェルはBシェル系とCシェル系の大きく2つに分類されます。
- Bシェル系
Bシェル系はUNIX 系OSの標準シェルで、シェルのなかでもオーソドックスなものとされています。
主に、sh、ksh、bashなどが挙げられます。 - Cシェル系
Cシェル系はBシェル系のshをC言語風にアレンジしたシェルです。
主に、csh、tcsh などが挙げられます。
sh
shはBourne Shell(ボーンシェル) やBシェルとも呼ばれています。
最も古くからあるUNIX系OSのためのシェルですが、UNIX以外のOSでも利用可能です。
ただし、後に登場したシェルと比較すると使いづらい部分もあることから、一般的にはsh以外のシェルを利用しています。
bash
bashはshを生まれ変わらせたという意味でBourne again shell(ボーンアゲインシェル)と呼ばれています。
shの互換性を持ちながら多くの付加機能が追加されました。
その使いやすさからLINUX系OSの標準シェルとして利用されており、macOSにも導入されているオーソドックスなシェルです。
Windows環境でも Windows Subsystem for Linux を用いることでbashを利用することができます。
zsh
zshはshやbashの拡張版のシェルで、Zシェルとも呼ばれています。
他のシェルを参考にさまざまな便利機能が取り入れられた、水準の高いプログラムです。
具体的な機能として、コマンドの補完機能や柔軟な検索機能、プラグインやテーマのサポートなどが挙げられます。
また、カスタマイズ性も高く、柔軟な拡張性が備わっています。
csh/tcsh
cshはC shell(シーシェル)と呼ばれており、tcshはcshを改良したシェルです。
UNIX系OSのための独自開発されたシェルであり、shやbash(ボーンシェル系)とは異なる文法や機能で構成されています。
C言語に似た文法構造となっているため、C言語を習得しているプログラマにとっては馴染みやすいシェルといえます。
ksh
kshはKornShell(コーンシェル)と呼ばれています。
UNIX系OSのためのシェルで、shの上位互換である一方、cshの機能も一部取り入れて開発されたシェルです。
そのため、Bシェル系とCシェル系の両方の利点を持っているといえます。
シェルを学習する上でのメリット・デメリット
未経験からシェルを学ぶ上でのメリット・デメリットについて紹介いたします。
メリット
シェルを学習する場合の主なメリットとして下記が挙げられます。
インフラエンジニアにとっては必須スキル
シェルはUNIXやLinux系OSを扱う場合、システム管理者や開発者にとっては必須スキルの一つといえます。
OSのコマンド操作だけでなく、ソフトウェアの起動や停止、再起動を行う上でも必要となるため、使用頻度も高く、習得したスキルを活かすことができる場面が多いです。
書籍や学習サイトが豊富
シェルに関する優れた書籍はいくつも出版されています。
また、実際にシェルを扱うことができるプログラミング学習サイトもあるため、気軽に実践的な学習を行うことができます。
デメリット
シェルを学習する場合の主なデメリットとして下記が挙げられます。
Webアプリケーションの開発に適さない
シェルはネットワーク通信機能が限られているため、Webアプリケーションの開発には向かないとされています。
そのため、アプリエンジニアを目指す場合、インフラエンジニアほど使用頻度としては高くない印象です。
シェルについて

ここまでシェルについて紹介してきました。
シェルの特徴としては下記があります。
- インフラエンジニアにとっては必須スキル
- 書籍や学習サイトが豊富
シェルを学習するメリットとしては下記があります。
- インフラエンジニアにとっては必須スキル
シェルを学習するデメリットとしては下記があります。
- Webアプリケーションの開発に適さない
シェルを活用して業務を自動化・効率化できるシーンは多数あるため、特にインフラエンジニアを目指す方にはおすすめのプログラムです。
無料のプログラミングスクール「テクドリ」の卒業生のインタビュー動画を、インスタグラムほか公式SNSにて公開中!