概要
Linux環境において、ログイン時に起動するデフォルトシェルを安全に切り替える標準コマンドが chsh(change shell)です。本記事では、現在割り当てられているシェル環境の確認方法から、/etc/shells や /etc/passwd と連動するOS内部の動作メカニズムに至るまで、実機のターミナル操作ログを交えて分かりやすく紐解いていきます。
現在のシェル設定と利用可能なシェル一覧の確認
セッションで現在割り当てられているログインシェルのパスを確かめるには、環境変数 $SHELL を参照します。ターミナルで echo $SHELL を実行してみましょう。
実行結果から、対象ユーザーの標準シェルとして /bin/bash が適用されていることが分かります。

OS上で安全なログインシェルとして登録されている候補一覧を調べるため、/etc/shells の内容を出力します。ここでは cat /etc/shells を実行します。
一覧には /bin/sh や /bin/bash など、システムが正規に認めているシェルバイナリのパスが列挙されているのが確認できます。

新規シェル(zsh)の導入と有効性のチェック
検証用として人気のある高機能シェル zsh をシステムに追加します。パッケージインデックスを更新したうえでインストールを行うため、sudo apt-get update -qq && sudo apt-get install -y zsh を実行します。

導入された実行バイナリの配置先パスを特定するため、which zsh を実行します。
コマンドの検索結果より、バイナリ本体が /usr/bin/zsh に正しく配備されたことが分かります。

新しくインストールした zsh がOSの許可シェルリスト(/etc/shells)に反映されているかを検証するため、grep -E 'bash|zsh' /etc/shells を実行します。
出力内に /bin/zsh や /usr/bin/zsh が含まれていれば、chsh コマンドを通じて切り替え可能な状態であることが保証されます。

chshコマンドによるデフォルトシェルの切り替え実践
操作対象のアカウントに間違いがないか、まずは id -un を実行して現在のログインユーザー名を出力します。
ここでは実行ユーザーが root であることが確認できました。

対象ユーザーのデフォルトログインシェルを zsh へと切り替えるため、-s オプションを指定して chsh -s $(which zsh) を実行します。
エラーなくプロンプトが戻ってくれば、指定したバイナリパス(/usr/bin/zsh)への設定変更が正常に受理されています。

アカウント管理データベースである /etc/passwd に設定が書き込まれたか確かめるため、grep "^$(whoami):" /etc/passwd を実行します。
ユーザーエントリ末尾のフィールド(ログインシェル指定箇所)が /usr/bin/zsh に更新されており、設定値がOSレベルで反映されたことが確認できます。

chshコマンドの動作メカニズムと初期設定への復旧
検証作業を終えたら、元の使い慣れたシェルへと環境を復元しておきましょう。ログインシェルを bash に戻すため、chsh -s /bin/bash を実行します。
コマンドが正常終了し、標準シェルが再び /bin/bash へとリセットされます。

設定ファイル上で正しく復旧されているかを再確認するため、再び grep "^$(whoami):" /etc/passwd を実行します。
末尾のシェル指定が /bin/bash に戻っており、安全に初期状態へ復元されたことが確認できます。

本記事では、Ubuntu環境で chsh を使ってデフォルトシェルを安全に変更する手順と、システム内部での反映の仕組みを解説しました。
お好みのシェル環境を自在に整え、日々のターミナル作業をより快適かつ効率的に進めてみてください。