開発の現場でよく聞く「シェル」「bash」「zsh」って結局何?という方へ向けて、
シェルの基本と使い分け、違いをわかりやすくまとめました。
✅ シェル(Shell)とは?
▶ 人間とコンピュータの「通訳」
シェルとは、ユーザーが打ち込んだコマンドをOSに伝えて実行する「仲介役」です。
- 私たち:
ls
やnpm run dev
と打つ - シェル:それを解釈してOSに「これやって」と伝える
つまり、シェルがあるからコマンドでコンピュータを操作できるというわけです。
✅ 代表的なシェルの種類と特徴
シェル名 | 特徴 |
---|---|
sh | 最も基本的で古いシェル |
bash | 定番。多くの環境で使われている(Bourne Again Shell) |
zsh | 補完や見た目が強化されていて人気。macOSの標準シェル |
fish | モダンで直感的。設定なしでも高機能 |
✅ bashとは?
- 「Bourne Again Shell」の略。
- LinuxやWSL、Docker環境などでよく使われる最も一般的なシェルです。
-
.bashrc
,.bash_profile
などで設定します。
✅ zshとは?
- bashをベースに、補完・色表示・テーマなどを強化したシェル。
- macOS Catalina(2019年)以降、macの標準シェルはzshになりました。
- 設定は
.zshrc
に書きます。 -
Oh My Zsh
という拡張パッケージでさらに便利になります。
✅ シェルによって何が違うの?
項目 | bash | zsh |
---|---|---|
補完機能 | 普通 | 超強力(候補が見やすい) |
設定ファイル |
~/.bashrc など |
~/.zshrc |
配列のインデックス | 0から始まる | 1から始まる(注意!) |
見た目のカスタマイズ | 少なめ | 豊富・テーマも多数 |
✅ Dockerでよく見る「bashで入る」ってなに?
docker compose exec app bash
- これは「コンテナ内でbashシェルを起動して入る」という意味です。
- zshが入っていないコンテナが多いため、bashがデフォルトで使われています。
✅ zshが入っていないときは?
軽量なLinux(例:Alpine Linux)や公式Dockerイメージでは zsh
が入っていないこともあります。
その場合は代わりに sh
や bash
を使いましょう:
docker compose exec app sh
✅ どれを使えばいいの?
状況 | おすすめのシェル |
---|---|
Docker・サーバー環境 | bash(互換性重視) |
macや普段の開発 | zsh(補完が便利) |
初心者で迷ったら | zsh + Oh My Zsh で快適に学べます |
📝 まとめ
- シェル = OSとやりとりするための通訳
- bash = 標準的なシェル
- zsh = 開発が快適になる高機能シェル
- シェルを変えると補完・設定方法・スクリプト構文が微妙に違う
- Dockerでは主に
bash
が使われる
どのシェルでも「やりたいこと」はだいたい同じですが、快適さや書き方が変わるので、自分に合ったシェルを選ぶと開発効率がグッと上がります!