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 13以降では、以下の手順を実行してください。
Appleメニュー から「システム設定」を選択します。
サイドバーの「ユーザとグループ」をクリックし、右側のユーザのリストで自分のユーザ名または画像を「control」キーを押しながらクリックして、「詳細オプション」を選択します。
画面の案内に従って、ユーザ名とパスワードを入力します。
「ログインシェル」メニューからシェルを選択し、「OK」をクリックして変更内容を保存します。
以前のバージョンのmacOSでは、以下の手順を実行してください。
Appleメニュー から「システム環境設定」を選択します。
「ユーザとグループ」をクリックし、 をクリックして、ユーザ名とパスワードを入力します。
左側にあるユーザのリストで自分のユーザ名を「control」キーを押しながらクリックし、「詳細オプション」を選択します。
「ログインシェル」メニューからシェルを選択し、「OK」をクリックして変更内容を保存します。
デフォルトを変更せずに別のシェルを使う方法
ターミナルの新しいウインドウやタブで、デフォルトのログインシェルを使いたくない場合は、次のようにします。
ターミナルを開いて、「ターミナル」メニューから「設定」(または「環境設定」)を選択します。
「一般」パネルで、「コマンド(完全パス)」を選択します。
隣接するフィールドに、「/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 サイトの正確性や信頼性についてはいかなる表明もいたしません。詳しくは各メーカーや開発元にお問い合わせください。