お断り
筆者はbashにもzshにも疎いです。そして、この記事はmacOSが対象です。
そしてそして、n番煎じの記事です(n>2)
予めご了承ください。
前置き
前日のWWDC2019にて、 macOS Catalinaが発表されたのはこの記事を読まれている皆さんの記憶にも新しいかと思います。
ところで、macOS Catalinaからは、新規ユーザーの設定時にデフォルトのログインシェルが bash
から zsh
になるようです。参考リンクはこちら
ということで、これを機に母艦であるMacにてbashからzshに 可能な限り既存の設定を引き継いで zshに乗り換えつつ、良い感じに整えてみたので、自分が行った手順を残しておこうかと思います。
参考になれば幸いです。
前提環境
筆者が行った際の環境は以下の通りです。
macOS 10.14.5 (Mojave)
iTerm2 3.2.9
Homebrew 2.1.4導入済み
また、これまでzsh
をインストールしたことがない環境への導入を行うものとして説明を行います。
セットアップ手順
前提環境にもあるように、ここでの手順はHomebrewを導入していることを前提に手順を記します。
また、以下の説明にて実行するコマンドの先頭には$
をつけています。
1. zshをインストール
zsh
に乗り換えるので、これがないと始まりません。
Homebrew経由でzsh
をインストールします。
$ brew install zsh
2. zsh-completionをインストール
zsh
の補完機能を強化するzsh-completion
をインストールします。
$ brew install zsh-completion
インストール後、設定を行うよう促される表示が出ますが、一旦無視します。
3. zshを起動してセットアップしてみる
おもむろに以下のコマンドでzsh
を起動します。
$ zsh
すると、以下のような表示が出るかもしれません。
This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~). This function can help you with a few settings that should
make your use of the shell easier.
You can:
(q) Quit and do nothing. The function will be run again next time.
(0) Exit, creating the file ~/.zshrc containing just a comment.
That will prevent this function being run again.
(1) Continue to the main menu.
--- Type one of the keys in parentheses ---
この表示が出た場合、1
をタイプします。
続けて、以下のような表示になります。
Please pick one of the following options:
(1) Configure settings for history, i.e. command lines remembered
and saved by the shell. (Recommended.)
(2) Configure the new completion system. (Recommended.)
(3) Configure how keys behave when editing command lines. (Recommended.)
(4) Pick some of the more common shell options. These are simple "on"
or "off" switches controlling the shell's features.
(0) Exit, creating a blank ~/.zshrc file.
(a) Abort all settings and start from scratch. Note this will overwrite
any settings from zsh-newuser-install already in the startup file.
It will not alter any of your other settings, however.
(q) Quit and do nothing else. The function will be run again next time.
--- Type one of the keys in parentheses ---
この表示で、0
をタイプします。
すると、コメントのみの~/.zshrc
が作成されますが、これを削除します。(理由は後ほど)
$ rm ~/.zshrc
zsh
を起動したまま、次の手順に進みます。
4. Preztoをセットアップ
zshの設定フレームワークと謳っているPrezto
をセットアップします。
PreztoのリポジトリのREADMEに従い、セットアップを行います。
先の手順でzsh
は起動してありますので、README中の手順1は飛ばします。
以下のコマンドを実行します。
$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
処理に時間がかかりますがしばらく待ちます。
終わったら、そのまま次のコマンドを実行します。
$ setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
このコマンドにより、Prezto
側でよしなに設定ファイルを作成してくれるようです。(先程削除した.zshrc
も含まれます)
その後、以下のコマンドを実行します。
これで、zsh
起動時にzsh-completion
を読み込む準備が整います。
$ echo 'fpath=(/usr/local/share/zsh-completions $fpath)' >> .zshrc
5. ログインシェルを変更する
新規タブ/ウインドウにてデフォルトでzsh
を起動するよう、ログインシェルをzsh
に変更します。
まず、インストールしたzsh
をログインシェルとして使用できるようにします。
/etc/shells
をお好みのエディタで編集します。スーパーユーザでないと書き込めないため、sudo
で実行します。
$ sudo vi /etc/shells
以下の記述を最後の行に追記し、保存します。
/usr/local/bin/zsh
その後、以下のコマンドを実行することでログインシェルがzsh
に変更されます。
$ chsh -s /usr/local/bin/zsh
6. 設定を整える
.bash_profile
、 .bashrc
を引き継ぎます。(他に設定ファイルがある場合、以下を参考によしなに引き継ぎます)
が、.zprofile
と.zshrc
は既にこれまでの手順でお膳立てされているので、追記する形で内容を引き継ぎます。
(ミスってここまでお膳立てした設定ファイルを失わないよう、バックアップを取るといいかもしれません。)
自分の試した範囲では、ほぼ全部引き継げていましたが、この手順の結果に関しては各自の環境に依るかと思われます。
$ cat .bash_profile >> .zprofile
$ cat .bashrc >> .zshrc
確認のため、新規タブもしくは新規ウインドウを開きます。
先の手順でログインシェルを変更したため、zsh
が立ち上がるかと思います。
が、もしかすると、起動時にエラーが出てきたりするかもしれません。
エラー文などを参考に、.zshrc
、.zprofile
等をよしなに編集し、エラーの解消に努めたりします。(完全に解消できないかもですが、環境に依りますので悪しからず...)
終わりに
補完機能がbashのときよりもつよく、良い感じです。
まだ使い始めたばかりなので、zsh
を使いこなせるよう頑張ります。
間違い等あるかもしれません、その際はコメントや編集リクエストでご指摘いただければ幸いです。
参考リンク
作業するにあたり、以下の文献を参考にしました。
bashからzshに移行したときのメモ