シェルの種類と確認方法:bash / zsh / fishを使いこなす

Linuxシステムを操作する上で、シェルはユーザーとカーネルの間に立つ重要なインターフェースです。コマンドを入力し、その結果を受け取る場所であり、日々の作業効率に直結します。

しかし、「シェルって何?」「今どのシェルを使っているの?」と疑問に思ったことはありませんか?この記事では、主要なシェルの種類とその特徴、そして現在使用しているシェルを確認・変更する方法について解説します。

この記事でわかること
  • シェルとは何か、その役割
  • 主要なシェルの種類(bashzshfishなど)とそれぞれの特徴
  • 現在使用中のシェルを確認する方法
  • デフォルトのシェルを変更する方法

シェルとは?Linux操作の要

シェルは、ユーザーが入力したコマンドを解釈し、OSのカーネルに伝達するプログラムです。カーネルからの処理結果を受け取り、ユーザーに表示する役割も担っています。

私たちがターミナルでコマンドを打ち込むとき、実際にはシェルを通じてシステムに命令していることになります。


主なシェルの種類と特徴

Linuxには様々なシェルが存在し、それぞれ異なる機能や特徴を持っています。

シェル名 特徴とメリット デメリット・注意点
Bash 多くのLinuxディストリビューションで標準。互換性が高く、豊富な情報がある。 特筆すべきデメリットは少ないが、最新の便利機能は他のシェルに劣ることも。
Zsh Bash互換でさらに高機能。強力な補完機能、豊富なカスタマイズ性、テーマが魅力。 高機能な分、設定ファイルが複雑になりやすい。
Fish 「Friendly Interactive SHell」。デフォルトで強力なシンタックスハイライト、サジェスト機能を持つ。 POSIX互換性がないため、Bash用のシェルスクリプトの一部がそのまま動かない場合がある。
Sh 最も基本的なシェル。軽量で互換性が高い。 対話的な操作には不向き。機能が限定的。
Csh/Tcsh C言語に似た文法を持つ。歴史は古いが、現在はあまり使われない。 シェルスクリプトの記述には不向きとされる。
この状況で困ったらコレ:どのシェルを使えばいい?
  • Linux初心者なら: まずはBashを使ってみましょう。ほとんどのシステムでデフォルトであり、情報も豊富です。
  • より快適な操作を求めるなら: ZshFishを試してみてください。特にZshはoh-my-zshなどのフレームワークを使うことで、手軽に高機能な環境を構築できます。

現在使用中のシェルを確認する方法

現在のシェルを確認するには、いくつかの方法があります。

1. echo $SHELLコマンドでデフォルトシェルを確認

$SHELLは、ログイン時のデフォルトシェルのパスを示します。 ただし、ターミナル上で zshfish などを手動で起動した場合は、実際に動作しているシェルと異なる場合があります

echo $SHELL

コマンド例:

$ echo $SHELL
/bin/bash

この例では、現在ログイン時のデフォルトシェルがBashであることがわかります。

2. ps -p $$で「現在のシェル」を確認

ps -p $$は、現在のシェルプロセスの情報を表示します。$$は現在のシェルのプロセスIDを表します。このコマンドは、今まさに利用しているシェルを正確に教えてくれます。

ps -p $$

コマンド例:

$ ps -p $$
  PID TTY          TIME CMD
 2130 pts/0    00:00:00 bash

このコマンドを実行すると、現在のシェルがBashであることが確認できます。

3. $0で現在のシェル名を表示
echo $0

このコマンドでも、現在実行中のシェルの名前が表示されます。ただし、シェルの起動方法によっては -bash-zsh などと表示される場合があります。


デフォルトのシェルを変更する方法

ユーザーのデフォルトシェルを変更するには、chshコマンドを使用します。

chshコマンドでシェルを変更する
chsh [ユーザー名]

ユーザー名を指定しない場合、現在のユーザーのシェルが変更されます。

まず、システムにインストールされている利用可能なシェルの一覧を確認します。

cat /etc/shells

コマンド例:

$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/git-shell
/bin/rbash
/bin/zsh
/usr/bin/zsh
/usr/bin/fish

次に、変更したいシェルを指定してchshを実行します。

chsh -s /bin/zsh

このコマンドを実行すると、パスワードの入力を求められます。パスワードを入力してEnterキーを押すと、シェルが変更されます。

chshコマンドの注意点
  • 他ユーザーのシェルを変更する場合は、sudo chsh -s /path/to/shell <ユーザー名>のようにsudoが必要です。
  • シェル変更後は必ず一度ログアウトして再ログインしましょう。これによって新しいシェルが適用されます。
  • システムに登録されていないパス(/etc/shellsに記載されていないパス)を指定すると、ログインできなくなるなどの問題が発生する可能性があります。変更する際は、/etc/shellsで確認できるパスを正確に指定しましょう。

補足:よくあるトラブル
  • シェルを変更したらログインできなくなった!
    • chshコマンドで存在しないシェルを指定したり、パスを間違えたりした場合に発生します。
    • 対処法: 別のユーザーでログインできる場合はそのユーザーでchshを使って元に戻すか、Linuxのリカバリーモード(シングルユーザーモード)で起動してchshコマンドや/etc/passwdファイルを直接編集して修正します。
  • Zshにしたのにプロンプトが変わらない/oh-my-zshが適用されない
    • chshでシェルを変更した後、一度ログアウトして再ログインしないと変更が反映されません。
    • また、oh-my-zshなどの設定は、ホームディレクトリにある.zshrcファイルに正しく記述されているか確認しましょう。
  • シェルスクリプトがBashでは動くのにFishでは動かない
    • これはFishシェルがPOSIX互換ではないためによく起こります。bashshで書かれたスクリプトは、Fish独自の文法とは異なるため、そのままでは実行できません。
    • 対処法: スクリプトの冒頭に#!/bin/bashなどとshebang(シバン)を明記し、fishから直接スクリプトを実行するのではなく、bash your_script.shのように明示的にbashで実行するよう指定しましょう。

まとめ

この記事では、Linuxにおけるシェルの役割、主要なシェルの種類と特徴、そして現在使用しているシェルの確認方法と変更方法について解説しました。

シェルはLinuxを操作する上での土台となります。それぞれのシェルの特性を理解し、自分の作業スタイルに合ったシェルを選択することで、より快適で効率的なLinuxライフを送ることができるでしょう。シェル選びに迷ったときは、まずはBashで基礎を学び、興味が出たらzshやfishなども試してみるのがおすすめです。

この記事が、シェルの種類と確認方法について理解を深める一助となれば幸いです。
ご覧いただきありがとうございました。

次回はSSHでリモートに接続する方法について解説します。

私たちは、お客さまが私たちのウェブサイトをどのように使用するのかを理解し、お客さまの体験を改善するために Cookie を使用しています。 閲覧を続けると Cookie の使用に同意したことになります。
拒否した場合、このウェブサイトにアクセスしてもお客さまの情報は追跡されません。 情報を追跡しない設定を記憶するために、ウェブブラウザで 1 つだけ Cookie が使用されます。