シェルとは
この記事の結論
- シェルとは、ターミナルという窓の中で動いていて、打ち込んだコマンドを解釈し、実行して結果を返すプログラムのことです。
- 窓がターミナル、その中身がシェル、文字で操作するという方式そのものがCLI、という関係です。同じ黒い画面に見えても、動いているシェルが違えば打つコマンドも変わります。
- よく使われるのは、Linuxやサーバーのbash、macOSで標準になっているzsh、Windowsに入っているPowerShellと、古くからあるコマンドプロンプトの4つです。
しぇる/Shell
ターミナルの中で動き、打ち込んだコマンドを解釈して実行するプログラムのことです。
最終更新: 2026-09-17
シェルとは何か(意味と読み方)
シェルとは、ターミナルの中で動いていて、打ち込んだコマンドを解釈し、実行して、結果を返すプログラムのことです。読み方は「しぇる」、英語では shell と書き、「殻」を意味します。OSの中核部分を包む殻のように、利用者とOSの間に立って取り次ぐ役割から、この名前が付いています。
ターミナルを開いて ls と打つと、ファイルの一覧が返ってきます。このとき文字を受け取って画面に出しているのがターミナル、ls という文字列を「一覧を表示せよという命令だ」と解釈して実行しているのがシェルです。窓と中身で担当が分かれている、と考えると混ざりません。
シェルは命令を1つずつ実行するだけでなく、複数の命令をつなげたり、条件で分けたり、繰り返したりもできます。この手順をファイルにまとめたものがシェルスクリプトで、毎日同じ作業を繰り返すときに使われます。
ターミナル・シェル・CLIの関係
この3語は同じ場面で出てくるので混同されがちですが、指しているものは別です。ターミナルは入力と表示を担当するアプリ(窓)、シェルはその中で動いているプログラム、CLIは文字で操作するという方式そのものを指します。
身近な例で言えば、ターミナルは電話機、シェルは相手をしてくれる担当者、CLIは「電話で話す」というやり方にあたります。電話機を替えても担当者は同じままですし、担当者が替われば返ってくる答えも変わります。
だから、「ターミナルを開いたのに記事のとおりに動かない」という詰まり方は、たいていシェルが違うことが原因です。窓の側の話はターミナルのページに、操作方式としての整理はCLIのページにまとめてあります。画面の読み方から始めたい場合はターミナルの使い方入門|AI開発で初心者がつまずく5つの点と対処法が入口になります。
シェルの主な種類
シェルは1種類ではありません。よく名前を見るのは次の4つです。
| 名前 | よく使われる場所 | 特徴 |
|---|---|---|
| bash | Linux、多くのサーバー。macOSにも同梱 | GNUが開発。入門記事やスクリプトの例がいちばん多く、迷ったときの基準になる |
| zsh | macOSの標準 | bashと書き方が近く、入力補完や表示のカスタマイズが充実している |
| PowerShell | Windows。macOSやLinuxにも導入できる | コマンドの結果を文字列ではなくオブジェクトとして受け渡す |
| コマンドプロンプト(cmd.exe) | Windowsに古くからある | dir copy など短い命令。バッチファイルの実行に使われる |
bashとzshは書き方が近いので、入門記事のコマンドはたいていどちらでも動きます。一方で、WindowsのシェルはLinux系とコマンド体系そのものが違います。公式の資料としては、bashはGNU Bash マニュアル、PowerShellはPowerShell のドキュメント(Microsoft Learn)、コマンドプロンプトで使える命令はWindows コマンド(Microsoft Learn)にまとまっています。
コマンドプロンプトとPowerShellの違い
Windowsには文字で操作する画面が2つあり、見た目が似ているせいで取り違えられます。中身はかなり違います。
| 観点 | コマンドプロンプト | PowerShell |
|---|---|---|
| 正体 | Windowsに古くからあるコマンドインタープリター | Microsoftが開発しているシェル兼スクリプト言語 |
| 受け渡すもの | 文字列 | オブジェクト(型を持ったデータ) |
| コマンドの形 | dir copy del など短い単語 | Get-ChildItem のような「動詞-名詞」の形 |
| 動く場所 | Windows | Windowsのほか、macOSやLinuxにも導入できる |
| プロンプトの表示 | C:\Users\name> | PS C:\Users\name> |
見分け方は最後の行が分かりやすく、行頭に PS が付いていればPowerShellです。なお、Windows ターミナルはこの両方を開ける「窓」であって、シェルそのものではありません。タブごとに違うシェルを開いている、という状態もあります。
受け渡すものの違いは、慣れてくると効いてきます。コマンドプロンプトでは結果が文字列なので、必要な部分を文字として切り出します。PowerShellでは結果がオブジェクトのまま次の命令へ渡るので、「名前」「サイズ」といった項目を指定して扱えます。
いま使っているシェルを確かめる方法
記事どおりに打っても動かないときは、まず自分が何を使っているかを確かめます。
- macOS・Linux:
echo $SHELLで、既定として設定されているシェルの場所が返ります。いま動いているものを見たいときはps -p $$と打つと、そのプロセスの名前が出ます。 - Windows:
$PSVersionTableと打って表が返ってくればPowerShellです。コマンドプロンプトでは、この書き方は通りません。 - 表示で見分ける:行頭が
PSで始まっていればPowerShell、C:\Users\name>の形ならコマンドプロンプトです。
macOSでターミナルそのものの使い方を確認したい場合は、ターミナルユーザガイド(Apple サポート)が公式の手引きです。シェルに打ち込む命令の書式そのものに慣れたいときは、コマンドライン短期集中講座(MDN Web Docs)に、コマンド名と引数の組み立て方が手を動かせる順番でまとまっています。
シェルを使うときの注意点
- 記事がどのシェルを前提にしているかを先に見る:Linux向けの記事の
lsをコマンドプロンプトで打っても通りません。同じ作業でも、bash と PowerShell では打つ命令そのものが変わります。 - 引用符の扱いがシェルごとに違う:bash や zsh では二重引用符の中で
$名前が値に置き換わりますが、一重引用符の中では文字のまま残ります。PowerShell は逆に一重引用符が文字どおりで、二重引用符が展開する側です。うまく動かないときは、まず引用符を疑います。 - 設定ファイルを書き換えると次に開いた窓から効く:zsh は
.zshrc、bash は.bashrc、PowerShell は$PROFILEを起動時に読みます。書き換えても今開いている窓には反映されないので、新しく開き直すか読み込み直して確かめます。 PATHを壊すとコマンドが見つからなくなる:設定ファイルでPATHを上書きすると、それまで使えていた命令が急に「見つかりません」と言われるようになります。書き足すときは、元の値を消さずに追加する形にします。- 鍵やパスワードを直接打たない:打った行は zsh なら
.zsh_history、bash なら.bash_history、PowerShell なら PSReadLine の履歴ファイルに平文で残ります。画面を閉じても消えません。APIキーの類は環境変数から読み込ませます。
AIコーディングエージェントに作業を任せる場合も、実行されているのはシェルのコマンドです。提案された命令をそのまま通す前に、何をするものかを自分で読めるようにしておくと、任せられる範囲が広がります。
関連用語
関連記事
よくある質問
Q1. シェルとは何ですか?
ターミナルの中で動いていて、打ち込んだコマンドを解釈し、実行して結果を返すプログラムのことです。名前は「殻」を意味する shell から来ていて、利用者とOSの中核部分の間に立って取り次ぐ役割を指しています。
Q2. ターミナルとシェルは何が違いますか?
ターミナルは文字の入力と表示を担当するアプリ、つまり窓です。シェルはその窓の中で動いていて、実際にコマンドを解釈し実行するプログラムです。窓を替えても中身は同じままですが、シェルが替わると打つコマンドが変わります。
Q3. コマンドプロンプトとPowerShellはどちらを使えばよいですか?
用途によります。バッチファイルの実行など従来からの作業はコマンドプロンプトで動きます。PowerShellは結果をオブジェクトとして受け渡せるので、条件で絞り込んだり項目を指定して扱ったりする作業に向いています。行頭の PS の有無で見分けられます。
Q4. bashとzshはどちらを使えばよいですか?
macOSではzshが標準になっているので、そのままで問題ありません。書き方はbashと近いため、入門記事のコマンドはたいていどちらでも動きます。サーバーの作業手順がbashを前提にしている場合は、そちらに合わせます。
Q5. いま使っているシェルはどうすれば分かりますか?
macOSやLinuxでは echo $SHELL で既定のシェルの場所が返り、ps -p $$ でいま動いているシェルの名前が分かります。Windowsでは $PSVersionTable と打って表が返ればPowerShell、行頭が C:\Users\name> の形ならコマンドプロンプトです。