「bashとzshって聞くけど、どっちを使えばいいの?」
Linux初心者がターミナルを開いて最初に戸惑うのが、プロンプト(入力待ちの記号)と「シェル」という見えない存在です。コマンドを入力しても反応してくれるのは、実はLinuxカーネルではなく「シェル」と呼ばれるプログラム。ここを理解していないと、設定ファイルの編集や環境変数の設定でつまずき、「なぜか動かない」状態に陥りがちです。
この記事では、20年以上Linuxサーバーを運用してきた立場から、Linuxのシェルとは何か、bashとzshの違い、そしてプロンプトの読み方を、Windows/IT未経験者にもわかるように解説します。
この記事のポイント
・シェルは「人間の入力をLinuxに伝える通訳」だと考えると理解が早い
・bashはサーバー標準、zshは対話環境が豪華でmacOS標準になった
・プロンプト「user@host:~$」には現在地とユーザー権限が全部載っている
・初心者はまずbashで基本を覚え、慣れたらzshを試す順番がおすすめ
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
そもそも「シェル」とは何か?
シェル(shell)は、直訳すると「殻」です。Linuxの中心にはカーネル(中核プログラム)があり、その周りを包んでユーザーとやり取りする「殻」がシェルだとイメージしてください。ユーザーがターミナルに入力した「ls」や「cd」といったコマンドは、いきなりカーネルに届くわけではありません。いったんシェルが受け取って解釈し、「このコマンドを実行してください」とカーネルに依頼します。そして結果を画面に表示するところまでがシェルの仕事です。
つまりシェルは、人間とLinuxの間に立つ「通訳」のような存在です。
1. シェルがあるから便利に使える
もしシェルがなかったら、コマンドの入力補完(Tabキーで候補を出す機能)も、コマンド履歴(↑キーで前のコマンドを呼び出す機能)も、「*.txt」のようなワイルドカードも使えません。シェルがこうした便利機能を一手に引き受けてくれているおかげで、私たちはストレスなくターミナルを使えるのです。2. 実行しているシェルを確認する方法
今使っているシェルが何かは、以下のコマンドで確認できます。# 現在ログイン中のシェルを確認 $ echo $SHELL /bin/bash # 実際にプロセスとして動いているシェルを確認 $ ps -p $$ PID TTY TIME CMD 12345 pts/0 00:00:00 bash
bashとzshの違い:どっちを選ぶべきか?
Linuxで使われる代表的なシェルは何種類もありますが、初心者がまず知っておくべきは「bash」と「zsh」の2つです。1. bash(バッシュ)の特徴
bashは「Bourne Again Shell」の略で、Linuxサーバーのほぼ全てで標準シェルとして採用されています。RHEL、Ubuntu、Debian、Rocky Linux、AlmaLinux、どれも初期状態ではbashです。・歴史が長い:1989年登場、30年以上の実績
・サーバー標準:本番サーバーで作業するなら必須
・情報量が豊富:トラブル時にググって出てくる記事はほぼbash前提
・シェルスクリプトの互換性:業務で書かれるスクリプトのほとんどがbash
2. zsh(ズィーシェル)の特徴
zshは「Z Shell」の略で、bashの上位互換と言える多機能シェルです。macOSは2019年のCatalina以降、標準シェルをzshに変更しました。・対話機能が豪華:Tab補完が賢く、候補が選択メニュー形式で出る
・プロンプトのカスタマイズが自在:Gitブランチ名の自動表示などが簡単
・プラグインエコシステム:Oh My Zshで一気に見た目も機能も強化できる
・macOS標準:Apple Silicon Macで普通に使うとzsh
3. 比較表:bashとzshの違い
| 項目 | bash | zsh |
|---|---|---|
| 初期導入 | ほぼ全Linuxディストリで標準 | 追加インストールが必要なことが多い |
| Tab補完 | シンプル(候補表示のみ) | メニュー選択式(矢印キーで選べる) |
| スペルミス訂正 | なし | あり(typoを自動提案) |
| プロンプトの情報量 | 標準は最小限 | プラグインで多機能表示が簡単 |
| 業務サーバーでの遭遇率 | 90%以上 | 10%以下 |
| 学習コスト | 低い(情報豊富) | 中(独自機能の理解が必要) |
4. 初心者が選ぶべきシェルは?
結論から言うと、まずはbashで基礎を固めるのが正解です。理由は3つあります。・実務のサーバーはほぼ100%bashであり、現場で戸惑わない
・書籍やWeb記事の大半がbash前提で書かれている
・シェルスクリプト(.sh)の互換性を最初から意識できる
zshは「bashを覚えたあとのご褒美」として導入するのがおすすめです。WSL2やmacOSで普段使いするPCのシェルをzshにして、サーバー接続時はbashを使う、という住み分けがプロの現場でもよく見られます。
プロンプトの読み方:記号ひとつひとつに意味がある
ターミナルを開くと、こんな表示が出てきます。tomohiro@web01:~/projects$
1. プロンプトの構成要素
`tomohiro@web01:~/projects$` を分解してみましょう。・tomohiro:ログイン中のユーザー名
・@:「~にて」を表す区切り記号(メールアドレスの@と同じ感覚)
・web01:接続しているサーバーのホスト名(PCの名前)
・:(コロン):区切り記号
・~/projects:現在いるディレクトリ(~はホームディレクトリの省略形)
・$:一般ユーザーでシェルが入力待ち状態であることを示す
つまりこのプロンプトは「tomohiroというユーザーがweb01というサーバーにログインしていて、今いる場所はホームディレクトリの中のprojectsフォルダ。一般ユーザー権限で入力待ちです」という情報を、記号だけで凝縮して伝えているのです。
2. 「$」と「#」の決定的な違い
プロンプトの末尾は、ユーザー権限によって変わります。ここを見落とすと、思わぬ事故につながります。| 記号 | 権限 | 意味 |
|---|---|---|
| $ | 一般ユーザー | 自分のファイルしか触れない(安全) |
| # | rootユーザー | 何でもできる(危険) |
3. プロンプトの表示例(実環境)
実際のRocky Linux 9サーバーでの出力を見てみましょう。マスク済みホスト名で記載します。# 一般ユーザーでログインした直後 [tomohiro@srv-xxxx ~]$ whoami tomohiro [tomohiro@srv-xxxx ~]$ pwd /home/tomohiro # sudo でrootになる [tomohiro@srv-xxxx ~]$ sudo -i [root@srv-xxxx ~]# whoami root [root@srv-xxxx ~]# pwd /root
シェルの設定ファイル:最初に触るべき3つ
bashを使い始めたら、いずれ「エイリアス(コマンドの短縮名)を設定したい」「プロンプトの色を変えたい」という欲求が出てきます。そのときに編集するのが、ホームディレクトリにある隠しファイル(ドットファイル)です。1. bashの主要な設定ファイル
| ファイル名 | 読み込まれるタイミング | 主な用途 |
|---|---|---|
| ~/.bash_profile | ログイン時に1回だけ | 環境変数(PATHなど)の設定 |
| ~/.bashrc | シェル起動のたびに毎回 | エイリアス、プロンプト装飾、関数 |
| ~/.bash_history | コマンド実行のたびに追記 | コマンド履歴の記録(編集不要) |
2. .bashrcを編集してエイリアスを登録する
よく使うコマンドの組み合わせは、エイリアス(別名)にして短く呼び出せるようにします。# .bashrc を編集 $ vi ~/.bashrc # ファイルの末尾に以下を追記 alias ll='ls -la' alias ..='cd ..' alias grep='grep --color=auto' # 編集したら設定を読み込む(再ログイン不要) $ source ~/.bashrc # 試してみる $ ll 合計 32 drwx------ 5 tomohiro tomohiro 4096 4月 20 14:30 . drwxr-xr-x 3 root root 4096 4月 1 09:12 .. -rw------- 1 tomohiro tomohiro 512 4月 20 14:30 .bash_history -rw-r--r-- 1 tomohiro tomohiro 231 4月 1 09:12 .bash_profile -rw-r--r-- 1 tomohiro tomohiro 514 4月 20 14:30 .bashrc
3. PATHを理解する
環境変数の中で最重要なのが `PATH` です。これは「コマンドを探しに行く場所のリスト」を意味します。# 現在のPATHを確認 $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/tomohiro/.local/bin # lsコマンドの実体がどこにあるか $ which ls /usr/bin/ls
WSL2・クラウド・VPSでシェルを触ってみる
「自分のPCにLinuxを入れるのは面倒」という初心者に、現在一番おすすめなのはWSL2(Windows Subsystem for Linux 2)です。Windows 10/11上で、本物のLinuxカーネルとbashを数分でセットアップできます。1. WSL2でUbuntuを起動してシェルを確認
# Windows PowerShellから(管理者権限) PS C:\> wsl --install -d Ubuntu # 初回起動後、Ubuntuのターミナルが開く tomohiro@DESKTOP-XXXXX:~$ echo $SHELL /bin/bash tomohiro@DESKTOP-XXXXX:~$ bash --version GNU bash, version 5.2.21(1)-release (aarch64-unknown-linux-gnu)
2. クラウド(AWS EC2・さくらVPS)でも同じ
AWS EC2やさくらのVPSに接続しても、見えるプロンプトの構造は全く同じです。学習環境はWSL2で、本番体験はクラウドで、という段階的なステップアップがしやすい時代になりました。AIツールと組み合わせて学ぶ
ChatGPTやGitHub Copilotは、シェル学習の強力な相棒です。ただし使い方には順序があります。1. 「わからない記号」を即質問
プロンプトに見慣れない記号(追記リダイレクトや `2>&1` `&` など)が出てきたら、すぐChatGPTに「これは何ですか?」と聞いてください。書籍の該当ページを探すより圧倒的に早く、文脈を踏まえた解説が返ってきます。2. シェルスクリプトの雛形生成
「毎朝/var/logのサイズをチェックしてメールする」のような要件を伝えると、Copilotが数秒でシェルスクリプトの雛形を生成します。ただしそのまま本番で動かすのは危険です。出力されたコードの1行1行を自分で読めるようになることが、AI時代のエンジニアの基礎体力です。よくあるエラーと対処法
1. 「command not found」が出た時の対処法
$ myscript.sh bash: myscript.sh: command not found
・スペルミス:まずはコマンド名を再確認
・PATHに入っていない:`./myscript.sh` のようにパスを明示するか、`/usr/local/bin` に配置
・実行権限がない:`chmod +x myscript.sh` で実行権限を付与
2. 「Permission denied」が出た時の対処法
$ ./myscript.sh bash: ./myscript.sh: Permission denied
$ ls -la myscript.sh -rw-r--r-- 1 tomohiro tomohiro 128 4月 20 14:45 myscript.sh $ chmod +x myscript.sh $ ls -la myscript.sh -rwxr-xr-x 1 tomohiro tomohiro 128 4月 20 14:45 myscript.sh
3. 「設定ファイルを編集したのに反映されない」時の対処法
.bashrcを編集したあと、反映のためにやるべきことは以下のいずれかです。・source ~/.bashrc を実行する(即時反映)
・ターミナルを閉じて開き直す(新しいシェルで読み込まれる)
・exitで一度ログアウトして再ログインする(.bash_profileも読み直す)
本記事のまとめ
Linuxのシェルは、カーネルとユーザーをつなぐ「通訳」です。初心者がまず押さえるべきは以下の3点です。| 押さえるポイント | コマンド・確認方法 |
|---|---|
| 現在のシェルを確認する | echo $SHELL および ps -p $$ |
| bashとzshの違いを理解する | サーバー=bash、開発PC=zshの使い分けが現代的 |
| プロンプトの$と#を見分ける | $=一般ユーザー(安全)、#=root(危険) |
| 設定ファイルを編集して反映する | vi ~/.bashrc 編集後 source ~/.bashrc |
| PATHを理解する | echo $PATH と which コマンド名 |
次に読みたい関連記事(実務スキル習得フェーズ)
シェルの基本がわかったら、次は実務で頻繁に使うコマンドの習得に進みましょう。以下の7テーマでは、本サイトで解説している実務スキルの入り口を紹介しています。・シェルスクリプト:シェルスクリプトカテゴリの記事一覧 — .bashrcの次は自動化スクリプトを書けるようになろう
・Linuxセキュリティ設定:セキュリティカテゴリの記事一覧 — SSH・ファイアウォール・権限管理の基礎
・サーバー構築ハンズオン:Linuxサーバー構築(Rocky Linux/RHEL9)カテゴリ — 現行OSで本番相当のサーバーを組む
・トラブルシューティング:Linuxトラブルシューティングカテゴリ — 「動かない」を自分で解決する力を養う
・ネットワーク診断・設定:ネットワークカテゴリの記事一覧 — ping・ss・nmcliで通信を確かめる
・ファイルシステム・ストレージ管理:ディスク操作カテゴリの記事一覧 — マウント・fstab・df/duを使いこなす
・現場コラム系:Linuxtipsカテゴリの記事一覧 — 20年以上の現場経験から生まれた実践Tips
また、本サイト運営者の宮崎は、15年間で3,100名以上にLinuxを教えてきた教育のプロです。無料メルマガでは、ブログには書かない現場のリアルな知見や、セミナー受講生限定のマニュアル情報を配信しています。Linux学習の挫折を防ぎたい方は、ぜひメルマガ登録もご検討ください。
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンド学習の先にある「サーバーをゼロから組み立てる力」を、初心者が迷わない順序で学べる一冊です。
無料マニュアルを受け取る >>
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます