0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Macのデフォルトのシェルを zsh から bash に変更する

Posted at

はじめに

macOS Catalina(10.15)以降、デフォルトのログインシェルは zsh です。
本記事では、ユーザーのデフォルトシェルを bash に変更する方法を、標準搭載の /bin/bash と、Homebrew でインストールする新しい bash(5系)それぞれについて解説します。あわせて、設定ファイルの読み込み順やトラブル対処もまとめます。


1. 前提知識:zsh と bash、どちらを選ぶ?

  • /bin/zsh:Appleが標準採用しているzsh。機能が新しく、今後のmacOSの説明やサンプルもzsh前提が増えています。
  • /bin/bash:macOSに標準搭載されていますが、バージョンは 3.2 系(ライセンスの都合で古い)。
  • brew bash:Homebrew で入れる bash 5系。最新機能や新しい構文を使いたい場合はこちらを推奨。

まとめ:
「とりあえず bash に戻したい」/bin/bash に切替
「新しい bash を使いたい」 → Homebrew で bash を入れて切替


2. いまのデフォルトシェルを確認

echo "$SHELL"
# 例)/bin/zsh なら zsh がデフォルト
#     /bin/bash なら bash がデフォルト

「ログイン時に実際に何が起動されるか」は、この値で判断します。


3. 切替に使う基礎コマンド

  • 利用可能なログインシェルの一覧:
cat /etc/shells
  • デフォルトシェルの変更(ユーザー単位):
chsh -s <シェルのフルパス>
# 例)標準bashへ
chsh -s /bin/bash
#     zshへ戻す
chsh -s /bin/zsh

補足chsh は対話なしで変更します。変更後、新しいログイン(再起動・再ログイン・新規ターミナル起動)で反映されます。


4. 標準の /bin/bash に切り替える

最短手順はこれだけです。

chsh -s /bin/bash
# 新しい Terminal ウィンドウ/タブを開くか、ログアウト→ログイン

うまくいかない場合は、/etc/shells/bin/bash が含まれているか確認してください(通常は標準記載されています)。


5. Homebrew の bash(5系)に切り替える

5.1 bash のインストール

  • Apple Silicon(M1/M2/M3…):
brew install bash
# パスは通常 /opt/homebrew/bin/bash
  • Intel Mac:
brew install bash
# パスは通常 /usr/local/bin/bash

5.2 /etc/shells に追記(管理者権限が必要)

# Apple Silicon
echo "/opt/homebrew/bin/bash" | sudo tee -a /etc/shells
# Intel
echo "/usr/local/bin/bash" | sudo tee -a /etc/shells

5.3 デフォルトシェルを変更

# Apple Silicon
chsh -s /opt/homebrew/bin/bash
# Intel
chsh -s /usr/local/bin/bash

新しいターミナルを開き、以下で確認します。

echo "$SHELL"
bash --version  # 5.x が表示されればOK

6. ターミナルアプリ側の設定(任意)

Terminal.app

  • 設定 → 「一般」 → 「シェルを開く」=「デフォルトのログインシェル」にしておくと、$SHELL がそのまま使われます。
  • プロファイル別に「コマンドを実行」にbashのパスを直書きすると、ログインシェルと不一致になることがあるため注意。

iTerm2

  • Profiles → Command を Login shell にしておくのが無難。必要があるときだけ明示コマンドにします。

7. 設定ファイルの読み込み順(bash 編)

macOS の Terminal はデフォルトで ログインシェル として起動します。
bash の読み込みルールは以下です。

  • ログインシェル

    1. /etc/profile
    2. ~/.bash_profile があればそれを読む
    3. なければ ~/.bash_login、それもなければ ~/.profile
  • 非ログイン・対話シェル

    • ~/.bashrc

実践上は ~/.bash_profile から ~/.bashrc を取り込むのが定番です。

# ~/.bash_profile
# (一度だけ読む系の設定:PATHや言語設定、pyenv初期化など)
[ -r ~/.bashrc ] && . ~/.bashrc
# ~/.bashrc
# (毎回読みたい:エイリアス、プロンプト、補完、関数など)
alias ll='ls -alF'

よくある質問:「設定が効かない」
→ Terminal がログインシェルで起動しているのに ~/.bashrc しか書いていないケース。~/.bash_profile から ~/.bashrc を読み込む記述を追加すると解決します。


8. zsh からの移行メモ

  • zsh の設定は主に ~/.zshrc。bash に移ると そのままでは読み込まれません。必要なエイリアスや関数は ~/.bashrc に移植します。
  • zsh 独自機能(autoloadsetoptzle など)は bash に互換がありません。置き換えや削除が必要な場合があります。
  • 補完は bash-completion を利用可能です(Homebrewの bash-completion@2 が bash5 系向け)。

9. ターミナル起動時にメッセージが表示されないよう環境変数を設定する

macOS Catalina 以降では、Apple がデフォルトシェルを bash から zsh に変更しました。
そのため、bash を使い続けていると、毎回次のようなメッセージが表示されます。

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.

この警告を非表示にするには、以下の環境変数を .bash_profile に追記します。

echo 'export BASH_SILENCE_DEPRECATION_WARNING=1' >> ~/.bash_profile

手順まとめ

  1. ターミナルで上記コマンドを実行

  2. 設定を反映:

    source ~/.bash_profile
    
  3. 新しいターミナルを開いて確認。メッセージが表示されなければ成功です。

解説

Apple は、この警告を抑制するための専用フラグとして BASH_SILENCE_DEPRECATION_WARNING を用意しています。
値を 1 に設定することで、この警告を非表示にできます。

.bash_profile に書く理由:macOS の Terminal はログインシェルとして起動するため、~/.bash_profile に設定するのが確実です。


10. もとに戻す(zsh に復帰)

chsh -s /bin/zsh

11. トラブルシュート

11.1 chsh: /xxx/bash: non-standard shell と言われる

/etc/shells にそのパスが載っていない可能性。管理者権限で追記してから chsh を再実行。

echo "/opt/homebrew/bin/bash" | sudo tee -a /etc/shells
chsh -s /opt/homebrew/bin/bash

11.2 設定が反映されない

  • 新しいウィンドウ / タブを開く、または一度ログアウト→ログイン。
  • Terminal / iTerm のプロファイルで「任意のコマンドを実行」にしていないか確認(Login shellにする)。

11.3 PATH やツール初期化が効かない

  • bash の読み込み順を再確認。~/.bash_profile~/.bashrc を適切に分担。

  • pyenv / nodenv / rbenv などは ログインシェル側~/.bash_profile)に初期化を置くと安定します。

    # ~/.bash_profile
    export PATH="$HOME/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    [ -r ~/.bashrc ] && . ~/.bashrc
    

11.4 一時的にだけ bash を使いたい

zsh のままでも、ターミナル上で bash と打てば そのセッションだけ bash になります(exit で戻る)。


12. まとめ:最短手順(用途別)

  • 標準の古い bash でOK(簡単・安全)

    chsh -s /bin/bash
    
  • 新しい bash(5系)が必要(新機能・最新構文)

    brew install bash
    # Apple Silicon
    echo "/opt/homebrew/bin/bash" | sudo tee -a /etc/shells
    chsh -s /opt/homebrew/bin/bash
    # Intel
    # echo "/usr/local/bin/bash" | sudo tee -a /etc/shells
    # chsh -s /usr/local/bin/bash
    

最後に、新しいターミナルを開き、echo "$SHELL"bash --version で結果を確認してください。これで zsh → bash への切り替えは完了です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?