zsh を Mac のデフォルトシェルとして使う

macOS Catalina ベータ版から、Mac は zsh をデフォルトのログインシェルおよびインタラクティブシェルとして使うようになります。それ以前のバージョンの macOS でも、zsh をデフォルトにすることができます。

デフォルトでは、Mac は zsh または bash をログインシェルやインタラクティブシェルのコマンドラインインタープリタとして使います。

  • zsh (Z シェル) は、macOS Catalina ベータ版から、新規作成されるすべてのユーザアカウントのデフォルトシェルになります。macOS Catalina ベータ版は現在、Apple Developer Program のメンバーにのみ公開されています。
  • bash は、macOS Mojave 以前のデフォルトのシェルです。

zsh は Bourne シェル (sh) との互換性が高く、bash とも若干の違いはあるものの、互換性があると言って差し支えありません。zsh について、また、そのコマンドライン補完システムについて調べるには、ターミナルで「man zsh」と入力してください。
  

デフォルトシェルを変更する方法

ユーザアカウントが zsh (推奨)、bash、または別のシェルのどれを使う設定になっていても、システム環境設定の「ユーザとグループ」パネルまたはコマンドラインからデフォルトのシェルを変更できます。

システム環境設定の「ユーザとグループ」パネルから

  1. Apple メニュー  >「システム環境設定」の順に選択し、「ユーザとグループ」をクリックします。
  2. 鍵のアイコン をクリックし、アカウント名とパスワードを入力します。
  3. 左側にあるユーザのリストで自分のユーザ名を「control」キーを押しながらクリックし、「詳細オプション」を選択します。 
  4. 「ログインシェル」メニューからシェルを選択し、「OK」をクリックして変更内容を保存します。

コマンドラインから

ターミナルで、「$ chsh -s path」と入力します。 path の部分には、「/etc/shells」に記述されているシェルのパスのいずれか 1 つ (/bin/zsh、/bin/bash、/bin/csh、/bin/dash、/bin/ksh、/bin/sh、/bin/tcsh など) を指定します。
  

デフォルトを変更せずに別のシェルを使う方法

ターミナルの新しいウインドウやタブで、デフォルトのログインシェルを使いたくない場合は、次のようにします。

  1. ターミナルを開いて、「ターミナル」>「環境設定」の順に選択します。
  2. 「一般」パネルで、「コマンド (完全パス)」を選択します。 
  3. その下のフィールドが使えるようになるので、「/etc/shells」に記述されているシェルのパスのいずれか 1 つ (/bin/zsh、/bin/bash、/bin/csh、/bin/dash、/bin/ksh、/bin/sh、/bin/tcsh など) を入力します。

macOS Catalina が別のシェルを使う設定になっている場合に bash シェルを呼び出すと、デフォルトのインタラクティブシェルは zsh になっているというメッセージが表示されます。この警告を非表示にするには、以下のコマンドを「~/.bash_profile」または「~/.profile」に追加できます。

export BASH_SILENCE_DEPRECATION_WARNING=1


zsh プロファイルとプロンプトに切り替える方法

bash プロファイルを使って、環境変数、エイリアス、パス変数の設定などをしている場合は、それに相当する zsh のプロファイルを使うように切り替えてください。以下に例を紹介します。

  • .zprofile.bash_profile に相当し、ログイン時 (SSH ログインも含む) に実行されます。
  • .zshrc.bashrc に相当し、新しいターミナルセッションごとに実行されます。

.profile (POSIX 互換のプロファイル) を使っている場合は、その設定を zsh で自動的に読み込むようにしておけます。以下のコマンドを .zprofile に追加してください。

[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'

さらに、一部の設定については、変更を加えずに bash プロファイルから zsh プロファイルに移すことができます。たとえば、環境変数を設定するには、「export MY_SETTING=1」と記述します。

zsh は bash とは違う一連のプロンプト指定子を認識し、出力のカラー表示を指定する構文もわかりやすく、複雑な ANSI エスケープシーケンスを使う必要もありません。たとえば、デフォルトの bash プロンプトの構文は .bash_profile では次のようになっています。

export PS1="\[\e[92;40m\]\h\[\e[m\]:\[\e[93m\]\W\[\e[m\] \\$ "

この bash プロンプトを zsh プロンプトに変換するには、.zprofile または .zshrc を使う場合、以下のようになります。

export PS1="%10F%m%f:%11F%1~%f \$ "

詳しくは、zsh の man ページを参照してください。


シェルスクリプトをテストする方法

macOS Catalina の Bourne 互換シェルとのスクリプトの互換性をテストするには、「/var/select/sh」を「/bin/bash」「/bin/dash」または「/bin/zsh」に変更してみます。「/var/select/sh」を bash 以外のシェルに変更する場合は、bashisms を使うスクリプトが適切に機能しなくなることがある点に注意してください。

コマンド zsh --emulate sh を実行して、zsh で sh をエミュレートできます。
  

Apple 製以外の製品に関する情報や、Apple が管理または検証していない個々の Web サイトは、推奨や承認なしで提供されています。Apple は他社の Web サイトや製品の選定、性能、使用については一切責任を負いません。Apple は他社の Web サイトの正確性や信頼性については一切明言いたしません。インターネットの使用にはリスクがつきものです。詳しくは各社にお問い合わせください。その他の会社名や製品名は、それぞれの所有者の商標である場合があります。

公開日: