bash から zsh への移行

macOS Mojave 以前は bash でした。しかし macOS Catalina からは標準のシェルが zsh(Z シェル) に変わりました。

この記事では bash から zsh に移行するときのポイント、移行することの利点や注意点について記載します。

1. なぜ bash から zsh へ移行するのか?

macOS Mojave 以前で使われてきたデフォルトのシェルは 2002年の OS X Jaguar (10.2) 以来、 bash でした。 しかし 2019年の WWDC で発表された macOS Catalina ではデフォルトシェルが zsh (z シェル) に変更されました。

Apple がシェルを変更する理由はライセンス上の問題です。

GNU bash はバージョン 3.2 までのライセンスが GPLv2 です。GNU bash バージョン 4.0 から GPLv3 になります。 Apple は GPLv2 のままにするために bash のバージョンも 3.2 のままにしてあります。

ちなみに、次のコマンドで実際にインストールされているバージョンを確認することができます。 私の MacBook Pro (2018, macOS Catalina) でも bash のバージョンは 3.2.57 です。

% bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin19)
Copyright (C) 2007 Free Software Foundation, Inc.

bash 3.2.57 は GPLv2 で使える最新のバージョンです。しかし、バージョン 3.2 自体、2007年のリリースとあって、かなり古いものです。

macOS Catalina (10.15) からはデフォルトシェルとして、Z シェル (zsh) が使われるようになります。zsh は MIT ライセンスです。

macOS では zsh や bash だけでなく csh や ksh など好きなシェルを使えます。「デフォルトシェルが zsh となる」というのは、ユーザーアカウントが作成されたときに、そのアカウントが使うデフォルトのシェルとして zsh が設定されるということです。

このため macOS Mojave 以前に作成したアカウントは、macOS Catalina に移行しても何もしなければ bash を使い続けることになります。 今後の macOS での標準のシェルとなる zsh を使うには、自分でシェルを切り替える設定をしないといけません。

この記事では、bash から zsh に移行する方法と、移行するときに最低限チェックした方が良い項目や知っておいた方が良い項目について説明します。

2. デフォルトのシェルを切り替える方法

2-1. ターミナルで切り替える方法

ターミナルを次のコマンドを実行することで、デフォルトのシェルを zsh に設定することができます。

$ chsh -s /bin/zsh

bash に戻すには同様に /bin/bash を指定します。

2-2. システムプリファレンスから設定する方法

システムの設定の Users & Groups でも、デフォルトのシェルを設定できます。

画面左下のロックを解除した後、Ctrl + クリックすることで、Advanced Options のメニューが表示されます。

bash から zsh への移行 1

Advanced Options でログインシェルの設定があります。これを /bin/zsh にすることで、Z シェルをデフォルトにすることができます。

bash から zsh への移行 2

3. 設定ファイルの変更

bash シェルはターミナルで起動されるたびに .bash_profile というシェルスクリプトを実行します。これによって、必要な環境変数を設定するなどして、 シェルの振る舞いをカスタマイズすることができます。

Z シェルの変更に伴い実行されるシェルスクリプトの名前が変わります。このため、bash から zsh に切り替えるときには、必要に応じてスクリプトを作成する必要があります。

bash で .bash_profile に書いていた内容は、zsh では .zprofile に書きます。また bash で .bashrc に書いていた内容は、zsh では .zshrc に書きます。

bash zsh
.bash_profile .zprofile
.bashrc .zshrc

現在 ~/.zprofile が存在しないのであれば、次のように丸コピーで作成できます。

$ cd ~
$ cp .bash_profile .zprofile

4. 知っておくと便利なこと

せっかく新しいシェルに移行したので、zsh を使うにあたり知っておくと便利なことを少し紹介しておきます。

多数のプラグインやテーマが設定できる

おそらく最も有名なのが Oh My Zsh という zsh の設定フレームワークがあります。

github.com - Oh My Zsh

これをインストールすることで、各種プラグインやテーマが簡単に設定できます。

cd コマンドを使うときには tab で候補を表示できる

bash でも入力の補完機能はあります。しかし zsh ではさらに機能拡張されています。

cd はディレクトリの移動コマンドですが、 正確なディレクトリ名を知らない場合、zsh では tab キーを押下することで、入力候補を次々表示したり、途中まで入力したディレクトリ名を補完します。

zsh

多数のオプションが設定できる

Z シェルには多数のオプションが用意されています。

例えば AUTO_CD というオプションがあります。このオプションを ON にすると、 ディレクトリ名を入力しただけで (cd コマンドを入力せずに) ディレクトリを移動できます。

/ % Library
zsh: command not found: Library
/ % setopt AUTO_CD
/ % Library
/Library % pwd
/Library

オプションを有効にするには、setopt コマンドを使います。 オプションを無効にするには unsetopt コマンドを使います。

また、主要なオプションには短縮形も決められており、例えば setopt AUTO_CD と 入力する代わりに setopt -J としても同じ効果があります。

オプションのリストについては man zshoptions で確認できます。

以上、zsh への移行の方法と、知っておくと良いことについて説明しました。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Swift による iOS 開発入門