Alecriar Studioの中の人の技術メモ

横浜の個人事業主が日々の技術的な情報をつづります

macOS 10.15 Catalinaでのデフォルトシェルをzshに変更

ターミナルでの警告

macOS 10.15 Catalina がリリースされてからしばらくたちますが、ターミナルを立ち上げたところ警告が表示されるようになりました。

f:id:alecriarstudio:20200409163104p:plain
警告

今回のアップデートからデフォルトシェルが bash から zshへ変更されたという内容です。 そのまま bash を使用し続けても問題はありませんが、良い機会なので デフォルトシェルを zsh へ変更する手順を記録しておきます。

GUIでシェルを変更

警告画面にあるように、以下のコマンドでただちに使用しているシェルを変更できます。

chsh -s /bin/zsh

ただ、macOSの場合はGUIで設定したほうがスマートです。まずApple メニューから「システム環境設定」を開き、「ユーザとグループ」を選択します。現在のユーザのところにカーソルをあわせ、controlキーを押しながら選択すると「詳細オプション」が表示されますので、それを開きます。

f:id:alecriarstudio:20200409164145p:plain
詳細オプション

詳細オプションの設定項目のうち、「ログインシェル」がそのユーザが使用するシェルです。これを「/bin/zsh」にします。

f:id:alecriarstudio:20200409164442p:plain
詳細オプション

以上で次回ログインから zsh がログインシェルとして扱われます。再起動後、ターミナルで警告が消えていることを確認します。

f:id:alecriarstudio:20200409164726p:plain
ターミナル 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]%}%(!.#.%%)%{

プロンプトについて独自の表示を行うために見直しは必須です。 以下のサイトが参考になります。

tegetegekibaru.blogspot.com

(参考) 補完機能をつける

補完機能の充実さは zsh の最大の特長です。せっかくなのでこれを .zshrc で有効にします。

~/.zshrc

autoload -U compinit
compinit

まとめ

  • zsh への移行は macOS の場合GUI画面で設定する
  • bash で使用していた設定ファイルはほとんどの場合、名前を変更するだけで zsh で使用できる