このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linux基礎:シェルの役割と種類

シェルの役割と種類

 Linuxを操作するとき、私たちは常に「シェル」と呼ばれるプログラムを介してコマンドを入力しています。シェルはユーザーの入力を解釈し、カーネルに処理を依頼して結果を表示する、いわば「ユーザーとカーネルの橋渡し役」です。

 Linuxでは標準的に bash (Bourne Again Shell) が用いられていますが、シェルには複数の種類が存在し、それぞれに特徴があります。システムの自動化、スクリプトの作成、環境のカスタマイズにおいてシェルの違いを理解することは非常に重要です。

 ここでは Rocky Linux 環境を例に、シェルの役割と基本的な仕組み、利用可能なシェルの種類を解説します。

1.シェルの役割と基本

1.1. シェルの役割

 シェルはユーザーが入力したコマンドを インタープリタ として解釈し、カーネルへ命令を伝達します。結果は標準出力(通常は端末画面)へ表示されます。

主な役割は次のとおりです。

役割説明
コマンド解釈ユーザーの入力を受け取り、実行可能な命令に変換
入出力の制御リダイレクトやパイプを用いて入出力を制御
環境制御環境変数の設定、プロンプト表示など
スクリプト実行コマンドを記述したシェルスクリプトを実行

リダイレクトとパイプ

  • リダイレクト:コマンドの出力をファイルに保存 [user@rocky9 ~]$ ls > filelist.txt
  • パイプ:あるコマンドの出力を別のコマンドの入力として渡す [user@rocky9 ~]$ ls | grep ".txt"

1.2. シェルの確認

現在利用しているシェルを確認するには ps コマンドや echo コマンドを利用します。

書式

ps
echo $SHELL

使用例

[user@rocky9 ~]$ ps
    PID TTY          TIME CMD
   7308 pts/0    00:00:00 bash
   8420 pts/0    00:00:00 ps

[user@rocky9 ~]$ echo $SHELL
/bin/bash

ここでは bash が利用されていることがわかります。

2.シェルの種類

2.1. 主なシェルの一覧

Linux には複数のシェルが用意されており、それぞれに特徴があります。

シェル特徴
sh (Bourne Shell)初期のUNIX標準シェル。シンプルでスクリプト互換性が高い。
bash (Bourne Again Shell)shを拡張した高機能シェル。Linuxの標準、スクリプト作成に便利
csh (C Shell)C言語に似た構文を持ち、プログラマに親しみやすい。
tcshcshを改良したもの。補完機能や便利な拡張が追加
ksh (Korn Shell)shをベースに改良された商用UNIXでよく利用されるシェル
zshbashやkshの機能を統合した多機能シェル。補完・カスタマイズ性が高い。

2.2. 利用可能なシェルの確認

システムにインストールされているシェルは /etc/shells で確認できます。

使用例

[user@rocky9 ~]$ cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

 このように、複数のシェルが登録されている場合、ログインシェルやスクリプト実行時にどのシェルを利用するかを選ぶことができます。

2.3. zshのインストール

次のコマンドでzshをインストールします。

[user@rocky9 ~]$ sudo dnf install zsh

インストールされているシェルを /etc/shells で確認します。

[user@rocky9 ~]$ cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/usr/bin/zsh
/bin/zsh

zshが追加されていることが確認できます。

3.ログインシェルの変更

ユーザーがログインしたときに使用される「ログインシェル」は chsh コマンドで変更できます。

書式

chsh -s [シェルのパス] [ユーザー名]

使用例

[user@rocky9 ~]$ sudo chsh -s /bin/zsh tanaka
tanaka のシェルを変更します。
シェルを変更しました。

この例では、ユーザー tanaka のログインシェルを zsh に変更しています。

まとめ

  • シェルは ユーザーの入力を解釈してカーネルに命令を渡すインタープリタ
  • 主な機能は コマンド実行、リダイレクト・パイプ処理、環境変数管理、スクリプト実行
  • Linux では bash が標準だが、sh, csh, tcsh, ksh, zsh など多様なシェルが存在する。
  • 現在のシェルは psecho $SHELL で確認可能。
  • 利用可能なシェルは /etc/shells に記載されている。
  • 必要に応じて chsh コマンドでログインシェルを変更できる。

シェルの役割と種類を理解することは、Linux操作の基盤を固める第一歩となります。