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

Linuxのシェルを一時的に切り替える方法

 Linuxシステムでは、デフォルトのシェル以外にもさまざまなシェルが利用可能です。作業内容や好みに応じて一時的に別のシェルを使用したい場合があります。今回は、シェルを一時的に切り替える方法について詳しく解説します。

 シェルは単なる一つのコマンドであり、使用したいシェルの名前を入力することで、そのシェルを起動できます。試しに別のシェルに切り替えてみましょう。

シェルの切り替え手順

1.shを起動する。

 まず、デフォルトでインストールされているshシェルを起動してみます。以下のコマンドを入力します。

このコマンドを実行すると、プロンプトが$に変わり、shシェルが起動します。

user01@ubuntu:~$ sh
$ 
2.bashを起動する。

次に、現在のshシェルから再びbashシェルを起動してみます。以下のコマンドを入力します。

 プロンプトがuser01@ubuntu:~$に戻り、bashシェルが起動します。一見元に戻ったように見えますが、この状態ではbashshbashとシェルが多重に起動しているだけです。

$ bash
user01@ubuntu:~$ 
3.ログアウトしようとする。

 一時的に起動したシェルはログインシェルではなく、非ログインシェルと呼ばれます。そのため、logoutコマンドを使用してログアウトしようとするとエラーが発生します。

user01@ubuntu:~$ logout
bash: logout: ログインシェルではありません: `exit' を使用してください
4.元のシェルに戻る。

 非ログインシェルから抜けるには、exitコマンドを使用します。多重にシェルが起動している場合、それぞれのシェルを順番に終了する必要があります。以下のようにexitコマンドを2回実行します。

これで元のログインシェルに戻ります。

user01@ubuntu:~$ exit
exit
$ exit
user01@ubuntu:~$

シェルの多重起動について

 シェルをコマンドとして実行すると、新しいシェルプロセスが現在のシェルの上に積み重なる形で起動します。この状態をシェルの多重起動と言います。それぞれのシェルは独立した環境を持ち、親のシェルに影響を与えません。

非ログインシェルとログインシェルの違い

項目ログインシェル非ログインシェル
起動方法ユーザーがログインしたときに自動的に起動既存のシェルからコマンドとして新たに起動
終了コマンドlogoutまたはexitexit
環境設定ファイル/etc/profile~/.bash_profileなどを読み込む~/.bashrcなどを読み込む
特徴システム全体の環境設定を反映する一時的なシェル環境を提供し、親シェルの環境を引き継ぐ場合が多い
非ログインシェルとログインシェルの違い

ログインシェルの変更方法

 一時的ではなく、ログインシェル自体を変更したい場合は、chshコマンドを使用します。例えば、zshをログインシェルに設定する場合は以下のようにします。

注意: シェルを変更する前に、新しいシェルがシステムにインストールされていることを確認してください。

chsh -s /bin/zsh

シェルの一覧と特徴

一般的に利用されるシェルとその特徴を以下の表にまとめます。

シェル名パス特徴
bash/bin/bashデフォルトのシェル。機能が豊富で使いやすい。
sh/bin/shシンプルなシェル。スクリプトの互換性が高い。
zsh/bin/zsh高度な補完機能とカスタマイズ性を持つ。
tcsh/bin/tcshcshの拡張版。C言語風の構文を持つ。
fish/bin/fishユーザーフレンドリーなシェル。自動補完機能が強力。
シェルの一覧と特徴

まとめ

 シェルを一時的に切り替えるには、使用したいシェルの名前をコマンドとして実行するだけで簡単に行えます。多重にシェルを起動した場合は、exitコマンドを使用して順番にシェルを終了し、元の環境に戻ることができます。

普段のログインシェルがbashであっても、作業内容に応じてzshtcshなど他のシェルを一時的に利用したい場合に便利な方法です。また、ログインシェル自体を変更したい場合は、chshコマンドを使用して設定を変更できます。

 シェルの特性を理解し、適切に使い分けることで、Linux環境での作業効率を向上させることができます。