Linuxのシェル入門|bashとzshの違いとプロンプトの読み方を初心者向けに解説


この記事の監修:宮崎智広(Linux教育歴15年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > Linuxのシェル入門|bashとzshの違いとプロンプトの読み方を初心者向けに解説
「Linuxを触り始めたばかりで、ターミナルに出てくる『$』や『%』が何を意味しているのかわからない」
「bashとzshって聞くけど、どっちを使えばいいの?」

Linux初心者がターミナルを開いて最初に戸惑うのが、プロンプト(入力待ちの記号)と「シェル」という見えない存在です。コマンドを入力しても反応してくれるのは、実はLinuxカーネルではなく「シェル」と呼ばれるプログラム。ここを理解していないと、設定ファイルの編集や環境変数の設定でつまずき、「なぜか動かない」状態に陥りがちです。

この記事では、20年以上Linuxサーバーを運用してきた立場から、Linuxのシェルとは何か、bashとzshの違い、そしてプロンプトの読み方を、Windows/IT未経験者にもわかるように解説します。

この記事のポイント

・シェルは「人間の入力をLinuxに伝える通訳」だと考えると理解が早い
・bashはサーバー標準、zshは対話環境が豪華でmacOS標準になった
・プロンプト「user@host:~$」には現在地とユーザー権限が全部載っている
・初心者はまずbashで基本を覚え、慣れたらzshを試す順番がおすすめ


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

そもそも「シェル」とは何か?

シェル(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

`$SHELL` はログイン時に設定されたデフォルトシェルで、`ps -p $$` は「今この瞬間に動いているシェル」を表示します。両者が食い違うことも稀にあるため、確実に確認したい場合は後者を使ってください。

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ユーザー 何でもできる(危険)
「#」が出ているときは、システム全体を壊せる強力な権限を持っています。私がセミナーで必ず伝えるのは「#のときは深呼吸してからEnterを押してください」という一言です。rm -rf / のような致命的なコマンドも、#なら問答無用で実行されてしまうからです。

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

sudo -i を実行した瞬間、プロンプトが `$` から `#` に変わり、ユーザー名も `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

`source ~/.bashrc` は「設定ファイルを今すぐ反映してください」という命令です。これを知らないと「.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

`ls` と入力したとき、シェルはPATHに記載されたディレクトリを左から順に探し、最初に見つかった `/usr/bin/ls` を実行します。独自スクリプトを作ったけど「command not found」と言われる場合、そのスクリプトの場所がPATHに入っていないのが原因です。

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)

WSL2のUbuntuは、最初からbashが入っています。上記のプロンプト `tomohiro@DESKTOP-XXXXX:~$` を読み解けば、「ユーザーtomohiro、ホスト名DESKTOP-XXXXX(Windowsのコンピュータ名)、ホームディレクトリ、一般ユーザー」だとわかります。

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

原因は大きく3つです。

スペルミス:まずはコマンド名を再確認
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

`-rwxr-xr-x` のように `x` が付けば実行可能になります。

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 $PATHwhich コマンド名
シェルを「単なる黒い画面」ではなく「自分と対話するプログラム」として捉えられるようになると、Linuxの学習速度は一気に上がります。まずはWSL2かクラウドVPSでbashの操作に慣れ、プロンプトの記号を全て説明できる状態を目指してください。

次に読みたい関連記事(実務スキル習得フェーズ)

シェルの基本がわかったら、次は実務で頻繁に使うコマンドの習得に進みましょう。以下の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サーバー構築の「型」を体系的に身につけたい方へ、
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンド学習の先にある「サーバーをゼロから組み立てる力」を、初心者が迷わない順序で学べる一冊です。
無料マニュアルを受け取る >>

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。