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

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

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

  • zsh (Z シェル) は、macOS Catalina 以降で新規作成されるすべてのユーザアカウントのデフォルトシェルです。

  • bash は、macOS Mojave 以前のデフォルトのシェルです。

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

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

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

コマンドラインから

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

「ユーザとグループ」設定から

macOS Ventura 以降では、以下の手順を実行してください。

  1. Apple メニュー  >「システム設定」の順に選択し、サイドバーで「ユーザとグループ」をクリックします。

  2. 右側のユーザのリストで自分のユーザ名または画像を「control」キーを押しながらクリックし、「詳細オプション」を選択します。

  3. 画面の案内に従って、ユーザ名とパスワードを入力します。

  4. 「ログインシェル」メニューからシェルを選択し、「OK」をクリックして変更内容を保存します。

以前のバージョンの macOS では、以下の手順を実行してください。

  1. Apple メニュー  >「システム環境設定」の順に選択し、「ユーザとグループ」をクリックします。

  2. 鍵のアイコンNo alt supplied for Image をクリックし、ユーザ名とパスワードを入力します。

  3. 左側にあるユーザのリストで自分のユーザ名を「control」キーを押しながらクリックし、「詳細オプション」を選択します。

  4. 「ログインシェル」メニューからシェルを選択し、「OK」をクリックして変更内容を保存します。

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

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

  1. ターミナルを開いて、「ターミナル」>「設定」(または「環境設定」) の順に選択します。

  2. 「一般」パネルで、「コマンド (完全パス)」を選択します。

  3. 隣接するフィールドに、「/etc/shells」に記述されているシェルのパスのいずれか 1 つ (/bin/zsh、/bin/bash、/bin/csh、/bin/dash、/bin/ksh、/bin/sh、/bin/tcsh など) を入力します。

macOS が別のシェルを使う設定になっている場合に 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 サイトの正確性や信頼性についてはいかなる表明もいたしません。詳しくは各メーカーや開発元にお問い合わせください。

公開日: