シェル(shell)とは何か - bash / zsh / sh とカーネルの関係
シェルって何だろう?
「bash」「zsh」「シェルスクリプト」——コマンドを学び始めると、こういう言葉によく出会う。でも「シェルそのものが何なのか」は意外と説明されないまま進んでしまいがち。
この記事では、シェル(shell)とは何か、bash / zsh / sh は何が違うのか、そしてシェルとカーネルがどう協力しているのかを、ライナとライニー先輩の会話でやさしく整理していく。
この記事でわかること
- シェル(shell)が「人間とOSの通訳」である理由
- シェルとカーネルの役割分担
- bash / zsh / sh の違いと、どれを使えばいいか
- 今自分が使っているシェルを確認するコマンド
- ログインシェルを安全に切り替える方法
1. シェルとは何か?
結論: シェルは、あなたが打ったコマンドを受け取ってOSの中心(カーネル)に伝え、結果を返す「通訳役」のプログラム。
シェル=コマンドインタプリタ
シェルの正式な役割は「コマンドインタプリタ」。打ち込まれた文字列を解釈し、対応するプログラムを起動する。ターミナル(画面)とシェル(解釈役)は別物だと意識すると混乱しにくい。
2. シェルとカーネルの関係は?
結論: カーネルがハードウェアを直接管理する「核」、シェルはその核と人間をつなぐ「外側の窓口」。役割が分かれている。
あなた → ターミナル → シェル → カーネル → ハードウェア (入力) (表示) (解釈) (実行) (CPU/メモリ/ディスク)
3つの登場人物
- ターミナル: 文字を入力・表示する「画面」
- シェル: コマンドを解釈してカーネルに渡す「通訳」
- カーネル: ハードウェアを動かすOSの「核」
3. bash / zsh / sh は何が違う?
結論: shは最も古い基本形、bashはその後継で最も普及、zshはbash互換で機能が豊富。中身は同じ「シェル」の仲間。
| シェル | 読み方 | 特徴 | 立ち位置 |
|---|---|---|---|
| sh | エスエイチ | 最も基本的・最小限 | 古典・スクリプトの基準 |
| bash | バッシュ | sh の後継、最も普及 | 多くのLinuxで標準 |
| zsh | ゼットシェル | bash 互換+高機能 | macOS 標準・カスタム派に人気 |
まず迷ったら bash
初心者のうちは bash で十分。Web上の解説やコマンド例も bash 前提のものが多く、学習がスムーズに進む。慣れてきたら zsh などへ乗り換えを検討すればいい。
各シェルのより詳しい比較は bash/zsh/fish の違いと選び方 でも解説している。
4. いま使っているシェルを確認するには?
結論:
echo $SHELLでログインシェル、ps -p $$で今動いているシェルがわかる。
echo $SHELL
/bin/bash
$SHELL には、ログイン時に起動するシェルのパスが入っている。上の例なら bash を使っている。
いま実際に動いているシェルを確認したいときは次のコマンドを使う。
ps -p $$
PID TTY TIME CMD 2451 pts/0 00:00:00 bash
$$ は「いま動いているシェル自身のプロセスID」を表す特別な変数。ps -p $$ で、そのシェルが bash なのか zsh なのかを直接確認できる。echo $SHELL(設定上のシェル)と結果が違うこともあるので、両方知っておくと安心。
使える(インストール済みの)シェル一覧は次で確認できる。
cat /etc/shells
/bin/sh /bin/bash /usr/bin/bash /bin/zsh /usr/bin/zsh
ターミナルの使い方 のページでは、コマンドの打ち方そのものを基礎から練習できる。シェルの確認コマンドも実際に試してみよう。
5. ログインシェルを変えるには?
結論:
chsh -sで変更できる。指定するシェルは/etc/shellsに載っているものだけにする。
chsh(change shell)コマンドを使うよ。ただし、変更前にいくつか注意点があるんだ。まず、変えたいシェルが /etc/shells に載っているか確認する(載っていないシェルは指定できない)。確認できたら次のように変更する。
chsh -s /bin/zsh
変更は次回ログインから反映される。
安全に試すコツ
/etc/shellsに載っていないパスを指定しない(ログインできなくなる原因になる)- いきなり変更せず、まず
zshとだけ打って一時的に起動し、使い心地を試してから決める - 元に戻したいときは
chsh -s /bin/bashで bash に戻せる
zsh って打って試してから、気に入ったら chsh で本採用ですね!まとめ
- シェルは、人間のコマンドをカーネルに伝える「通訳役」のプログラム
- カーネルはハードウェアを動かす「核」、シェルはその外側の窓口
- sh は基本形、bash は最も普及した後継、zsh は bash 互換で高機能
echo $SHELLとps -p $$で今のシェルを確認できるchsh -sでログインシェルを変更できる(/etc/shellsの範囲で)