このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Linuxのシェルを一時的に切り替える方法
Linuxシステムでは、デフォルトのシェル以外にもさまざまなシェルが利用可能です。作業内容や好みに応じて一時的に別のシェルを使用したい場合があります。今回は、シェルを一時的に切り替える方法について詳しく解説します。
シェルは単なる一つのコマンドであり、使用したいシェルの名前を入力することで、そのシェルを起動できます。試しに別のシェルに切り替えてみましょう。
シェルの切り替え手順
1.sh
を起動する。
まず、デフォルトでインストールされているsh
シェルを起動してみます。以下のコマンドを入力します。
このコマンドを実行すると、プロンプトが$
に変わり、sh
シェルが起動します。
user01@ubuntu:~$ sh
$
2.bash
を起動する。
次に、現在のsh
シェルから再びbash
シェルを起動してみます。以下のコマンドを入力します。
プロンプトがuser01@ubuntu:~$
に戻り、bash
シェルが起動します。一見元に戻ったように見えますが、この状態ではbash
→sh
→bash
とシェルが多重に起動しているだけです。
$ bash
user01@ubuntu:~$
3.ログアウトしようとする。
一時的に起動したシェルはログインシェルではなく、非ログインシェルと呼ばれます。そのため、logout
コマンドを使用してログアウトしようとするとエラーが発生します。
user01@ubuntu:~$ logout
bash: logout: ログインシェルではありません: `exit' を使用してください
4.元のシェルに戻る。
非ログインシェルから抜けるには、exit
コマンドを使用します。多重にシェルが起動している場合、それぞれのシェルを順番に終了する必要があります。以下のようにexit
コマンドを2回実行します。
これで元のログインシェルに戻ります。
user01@ubuntu:~$ exit
exit
$ exit
user01@ubuntu:~$
シェルの多重起動について
シェルをコマンドとして実行すると、新しいシェルプロセスが現在のシェルの上に積み重なる形で起動します。この状態をシェルの多重起動と言います。それぞれのシェルは独立した環境を持ち、親のシェルに影響を与えません。
非ログインシェルとログインシェルの違い
項目 | ログインシェル | 非ログインシェル |
---|---|---|
起動方法 | ユーザーがログインしたときに自動的に起動 | 既存のシェルからコマンドとして新たに起動 |
終了コマンド | logout またはexit | exit |
環境設定ファイル | /etc/profile 、~/.bash_profile などを読み込む | ~/.bashrc などを読み込む |
特徴 | システム全体の環境設定を反映する | 一時的なシェル環境を提供し、親シェルの環境を引き継ぐ場合が多い |
ログインシェルの変更方法
一時的ではなく、ログインシェル自体を変更したい場合は、chsh
コマンドを使用します。例えば、zsh
をログインシェルに設定する場合は以下のようにします。
注意: シェルを変更する前に、新しいシェルがシステムにインストールされていることを確認してください。
chsh -s /bin/zsh
シェルの一覧と特徴
一般的に利用されるシェルとその特徴を以下の表にまとめます。
シェル名 | パス | 特徴 |
---|---|---|
bash | /bin/bash | デフォルトのシェル。機能が豊富で使いやすい。 |
sh | /bin/sh | シンプルなシェル。スクリプトの互換性が高い。 |
zsh | /bin/zsh | 高度な補完機能とカスタマイズ性を持つ。 |
tcsh | /bin/tcsh | csh の拡張版。C言語風の構文を持つ。 |
fish | /bin/fish | ユーザーフレンドリーなシェル。自動補完機能が強力。 |
まとめ
シェルを一時的に切り替えるには、使用したいシェルの名前をコマンドとして実行するだけで簡単に行えます。多重にシェルを起動した場合は、exit
コマンドを使用して順番にシェルを終了し、元の環境に戻ることができます。
普段のログインシェルがbash
であっても、作業内容に応じてzsh
やtcsh
など他のシェルを一時的に利用したい場合に便利な方法です。また、ログインシェル自体を変更したい場合は、chsh
コマンドを使用して設定を変更できます。
シェルの特性を理解し、適切に使い分けることで、Linux環境での作業効率を向上させることができます。