シェルとは何か?
シェル(Shell)とは、ユーザーの入力(コマンド)を受け取り、OS(オペレーティングシステム)に伝えて実行するインタプリタ(翻訳・実行プログラム)です。
名前の由来は「殻(から)」で、OS の核(カーネル)を包む外側の層という意味です。
ターミナルとシェルの違い:
ターミナルは「画面・入出力を担うアプリ」で、シェルは「コマンドを解釈・実行するプログラム」です。ターミナルを起動すると、その中でシェルが動いています。
主なシェルの種類
シェルにはいくつかの種類があり、それぞれ特徴が異なります。
| シェル名 | 特徴 | Mac での状況 |
|---|---|---|
bash | 長年 Linux/Mac の標準。多くのスクリプトで使われる | macOS Catalina (2019) まで標準 |
zsh | bash 互換でありつつ補完・テーマが強力 | macOS Catalina 以降の標準 |
fish | ユーザーフレンドリーな補完・シンタックス強調 | 任意でインストール |
Mac の標準シェル「zsh」
2019年の macOS Catalina から、Mac のデフォルトシェルは zsh(ズィーシェル)に変わりました。
zsh の主な特徴:
- bash とほぼ同じコマンドが使える(互換性が高い)
- 強力なタブ補完(コマンド・ファイル名・引数まで補完)
- コマンド履歴の共有(複数のタブで履歴を共有)
- プロンプトのカスタマイズが豊富
現在のシェルを確認する
% echo $SHELL
/bin/zsh
/bin/zsh と表示されれば zsh を使っています。/bin/bash なら bash です。
コマンドが実行される仕組み
ターミナルにコマンドを入力して Enter を押すと、次の流れで処理されます。
- ターミナルが入力を受け取る
- シェル(zsh)がコマンドを解析する
- シェルが PATH を検索してコマンドの実体(プログラムファイル)を探す
- 見つかったプログラムを OS が実行する
- 結果をターミナルに表示する
which コマンド名 でコマンドの実体ファイルの場所を確認できます。例:which node → /usr/local/bin/node
シェルの設定ファイル
シェルには設定ファイルがあり、起動時に自動で読み込まれます。
| ファイル | 用途 |
|---|---|
~/.zshrc | zsh の設定(alias、関数、PATH など) |
~/.bash_profile | bash のログイン時設定 |
~/.bashrc | bash の起動時設定 |
例えば Homebrew をインストールすると、自動で ~/.zshrc に PATH の設定が追記されます。
設定ファイルを反映させる
% source ~/.zshrc
設定ファイルを編集した後は source コマンドで変更を反映させます。ターミナルを再起動しても同じ効果があります。
環境変数とは
シェルには環境変数という、シェル全体で参照できる設定値を保存する仕組みがあります。
# 環境変数を確認する
% echo $HOME
/Users/username
% echo $PATH
/usr/local/bin:/usr/bin:/bin
# 環境変数を一覧表示する
% env
Claude Code の API キーも環境変数として設定します(ANTHROPIC_API_KEY)。
- シェルはコマンドを解釈・実行するプログラム(ターミナルとは別物)
- Mac の標準シェルは zsh(macOS Catalina 以降)
- bash と zsh は基本的なコマンドはほぼ同じ
- 設定ファイル ~/.zshrc でシェルの動作をカスタマイズできる
- 環境変数はシェル全体で参照できる設定値(API キーもここに保存)