シェルを変更する手順は、大きく分けて「一時的に試す」「恒久的に変更する」「OSごとの注意点を確認する」の3ステップです。
1. 現在のシェルと利用可能なシェルを確認する
まず、現在のシェルと、システムにインストールされている(変更可能な)シェルのリストを確認します。
- 現在のシェルを確認:Bash
echo $SHELL - インストール済みのシェル一覧を表示:Bash
cat /etc/shells[!NOTE]もしリストにfishやnu(Nushell) がない場合は、事前にbrew installやapt installでインストールしておく必要があります。
2. シェルを恒久的に変更する (chsh コマンド)
ログインシェルを正式に変更するには chsh (change shell) コマンドを使用します。
Linux (Ubuntu 等) / macOS の場合
ターミナルで以下のコマンドを実行します。
chsh -s /path/to/shell
- 例(Fishに変更する場合):
chsh -s /usr/local/bin/fish - 例(Zshに戻す場合):
chsh -s /bin/zsh
実行後の注意点:
- パスワードを求められるので入力します。
- 一度ログアウト(またはPC再起動)するまで反映されません。
- 新しいターミナルウィンドウを開いて
echo $SHELLで変更を確認してください。
3. OSごとの特殊な手順
macOS の場合 (システム設定から)
コマンドライン以外に、GUIからも変更可能です。
- 「システム設定」>「ユーザとグループ」を開く。
- 自分のユーザ名を 右クリック(またはControlキー+クリック) して「詳細オプション…」を選択。
- 「ログインシェル」の項目を書き換える。
Headlessサーバー (Ubuntu等) の場合
SSH接続しているサーバーで変更する場合も chsh で問題ありませんが、変更後にSSHを繋ぎ直す必要があります。万が一、新しいシェルのパスが間違っているとログインできなくなるリスクがあるため、別のウィンドウでSSH接続を維持したまま、新しいウィンドウでログインできるか試すのがプロの鉄則です。
4. 移行時のアドバイス(設定ファイルの扱い)
Zshからモダンなシェル(FishやNushell)へ移行する場合、以下の点に注意してください。
- 環境変数の移行:
.zshrcで定義しているexport PATH=...などの設定は、新しいシェルの設定ファイル(例:~/.config/fish/config.fish)に書き換える必要があります。 - 自作関数のポータビリティ: 以前作成した
memoやytsubなどの関数は、Zsh特有の書き方をしている場合、そのままでは動きません。- 対策: これらのロジックを
pythonスクリプト(~/bin/ytt_processor.pyのように)として独立させておけば、どのシェルからでも呼び出すだけで済むようになり、移行が楽になります。
- 対策: これらのロジックを
- エイリアスの再定義:
alias dc='docker compose'などのエイリアスも、新しいシェルの文法に合わせて再設定が必要です。
⚠️ 最初は「一時的」に試すのがおすすめ
いきなり chsh するのではなく、ターミナル上で単に fish や nu と入力して実行するだけで、そのウィンドウの間だけ新しいシェルを試せます。

コメント