Linux入門:コマンド操作のきほん

シェルとターミナルの違いを理解する

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

シェルとターミナルの違いを理解する とは

コマンド操作の入り口となるシェルとターミナルの違いについて理解を深めます。本レッスンでは、シェルとターミナルの違いを理解する の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。

なぜ重要か

初心者のうちは「ターミナル」「シェル」「コンソール」「コマンドプロンプト」などの言葉が混ざって使われ、何が何だか分からなくなります。実はこれらはそれぞれ役割の違う別物で、ここを切り分けて理解できると、設定ファイルや環境変数の話がぐっとクリアになります。

たとえば「シェルの設定が読まれない」「ターミナルの色が変」「ssh 越しだけ挙動が違う」などのトラブルに遭遇したとき、どこのレイヤの問題なのかを見抜けるかどうかは、シェルとターミナルの区別がついているかにかかっています。

ターミナルとシェルの役割分担

非常にざっくり言うと、次のような役割分担になっています。

名前役割具体例
ターミナルエミュレータ画面表示・キー入力を担当する GUI/CUI アプリiTerm2, Alacritty, Windows Terminal, GNOME Terminal
シェル入力された文字列を解釈してコマンドを実行bash, zsh, fish, sh, dash
カーネル実際にプロセスを生成しファイルを読むLinux kernel

ターミナルは「画面と入力」を担当するただの窓で、文字列をシェルに渡して、返ってきた文字列を表示しているだけです。実際にコマンドを動かしているのはシェル、そしてその先のカーネルです。

図解 入力からプロセスまで

diagram (will load when visible)

左から右に入力が流れ、右から左に出力が戻ってくるイメージです。ターミナルとシェルの間は標準入力・標準出力でつながっており、ssh 越しだとこの間がネットワーク経由になります。

代表的なシェル

ターミナル

# 現在のシェルを確認 echo $SHELL # /bin/zsh # 自分のログインシェル一覧 cat /etc/shells

現代の Linux / macOS で多いのは bash と zsh です。macOS の Catalina 以降はデフォルトが zsh、多くの Linux ディストロは bash がデフォルトです。シェルごとに設定ファイル名 (~/.bashrc, ~/.zshrc) や対応している構文 (連想配列など) が違うので、まずは自分が今どのシェルを使っているか確認するクセを付けましょう。

echo $SHELL はログインシェルの設定値を表示するだけで、現在実際に動いているシェルとは違うことがあります。子プロセスとして別のシェルが起動している場合は ps -p $$ の出力で実体を確認すると確実です。

ターミナルエミュレータの違い

ターミナルエミュレータごとに次のような違いがあります。

  • 描画速度 (Alacritty, WezTerm は GPU 描画で速い)
  • フォントや絵文字の表示品質
  • タブ / 分割ウィンドウのサポート
  • True Color、UTF-8 対応
  • macOS の AppleScript 対応など OS 固有の連携

どのターミナルを使ってもシェル側の挙動は基本的に変わりませんが、色のレンダリングやキーバインドはターミナル側の責務なので、見た目が崩れる場合はターミナル側の設定を疑います。

コンソール / コマンドプロンプト / PowerShell との対応

ターミナル

# Linux: bash ls -la # Windows コマンドプロンプト (cmd.exe) dir # PowerShell Get-ChildItem

Windows の「コマンドプロンプト」と「PowerShell」は、それぞれシェルにあたります。実行する窓 (= ターミナル) は Windows Terminal です。Linux で言うところの bash と zsh が共存している状況に似ています。WSL を入れると、Windows Terminal の中で bash も動かせるようになります。

ローカル / ssh / コンテナ それぞれの組み合わせ

実務でよくある組み合わせはこんな感じです。

ターミナル

# ローカル: iTerm2 + zsh + macOS カーネル # サーバー: iTerm2 で ssh → 向こうで bash → Linux カーネル ssh deploy@web-01.example.com # コンテナ: iTerm2 で docker exec → コンテナ内の sh → ホスト Linux カーネル docker exec -it api sh

ターミナルは常に手元、シェルは接続先、カーネルもさらにその先、という入れ子構造になっています。ssh やコンテナの「中に入る」というのは、シェルだけを別のホストに切り替える操作と考えると整理しやすくなります。

exit でシェルを抜けてもターミナルアプリは閉じません。ターミナルを閉じたいなら、ターミナル側のショートカット (Cmd+W や Ctrl+Shift+W) を使います。「シェルを終了する」と「ターミナルを閉じる」は別操作です。

トラブル時の切り分けの考え方

  • 文字化けや色がおかしい場合はターミナル設定 (フォント、エンコード) を疑う
  • alias やプロンプトが効かない場合はシェルの rc ファイル (~/.zshrc など) を疑う
  • 「コマンドが見つからない」場合は PATH (シェルの責務) を疑う
  • ファイル権限で失敗する場合はカーネル (権限システム) の話

レイヤを分けて考えられると、原因の所在が短時間で絞り込めます。

まとめ

  • ターミナルは画面と入力、シェルは解釈と実行、カーネルが実際の動作を担当する三層構造
  • 現代の主流は bash と zsh、macOS デフォルトは zsh、多くの Linux は bash
  • ssh やコンテナは「シェルだけを別のホストに切り替える」操作
  • 設定が効かないときは、どのレイヤの問題かを切り分けると速く解決できる
  • Windows の cmd / PowerShell もシェルにあたり、Windows Terminal がターミナル

次のレッスン

次は 最初のコマンドを打ってみよう で、コマンド操作の入り口となるシェルとターミナルの違いについて理解を深めます を学びます。

事前確認 — 進む前に次の 3 つができることを確認しましょう。

  1. シェルとターミナル の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. シェルとターミナル とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

参考リンク