macOS 10.15 Catalinaでのデフォルトシェルをzshに変更
ターミナルでの警告
macOS 10.15 Catalina がリリースされてからしばらくたちますが、ターミナルを立ち上げたところ警告が表示されるようになりました。
今回のアップデートからデフォルトシェルが bash から zshへ変更されたという内容です。 そのまま bash を使用し続けても問題はありませんが、良い機会なので デフォルトシェルを zsh へ変更する手順を記録しておきます。
GUIでシェルを変更
警告画面にあるように、以下のコマンドでただちに使用しているシェルを変更できます。
chsh -s /bin/zsh
ただ、macOSの場合はGUIで設定したほうがスマートです。まずApple メニューから「システム環境設定」を開き、「ユーザとグループ」を選択します。現在のユーザのところにカーソルをあわせ、controlキーを押しながら選択すると「詳細オプション」が表示されますので、それを開きます。
詳細オプションの設定項目のうち、「ログインシェル」がそのユーザが使用するシェルです。これを「/bin/zsh」にします。
以上で次回ログインから zsh がログインシェルとして扱われます。再起動後、ターミナルで警告が消えていることを確認します。
設定の移植
bash で使用される設定ファイル群はそのままでは zsh に反映されません。対応表は以下のようになります。
bashの設定ファイル名 | zshでの設定ファイル名 | 用途 |
---|---|---|
~/.bash_profile | ~/.zprofile | ログインシェルが起動されたとき最初に適用される。 |
~/.bash_profile | ~/.zlogin | ログインシェルの起動時に適用されるが、.zprofileより後に読まれる。 |
~/.bashrc | ~/.zshrc | シェルを起動した際その都度適用される。PROMPTの設定はこちらで行うのが最適。 |
~/.bash_logout | ~/.zlogout | ログインシェルの終わりに読まれる。 |
ほとんどが bash の設定ファイルの名前を変更するだけで移植できますが、一部記述方法が異なる場合があります。
(参考) プロンプトの記述方法
例えば、 bash で以下のようなプロンプトを使用していたとします。
PS1='\[\e[1;7;32;44m\]\W\[\e[0m\]\[\e[1;32m\]\$\[\e[0m\] '
これを zsh の記述に直すと以下のようになり、記述方法が全く異なります。
PROMPT='%S%{$fg_bold[green]%}%{$bg[blue]%}%1~%{$reset_color%}%s%{$fg_bold[green]%}%(!.#.%%)%{
プロンプトについて独自の表示を行うために見直しは必須です。 以下のサイトが参考になります。
(参考) 補完機能をつける
補完機能の充実さは zsh の最大の特長です。せっかくなのでこれを .zshrc で有効にします。
~/.zshrc
autoload -U compinit compinit