見出し画像

シェル環境をzshに移行した

タイトルの通りですが、備忘録も兼ねて記事にしようと思います。
テクニカルな内容なので結論だけ先に!という方は最後のまとめをご覧ください。

ターミナルを使う頻度が増えていた

以前はプログラミングに IDE を使うことが多く、ターミナルに自分で直接コマンドを打つことがほとんどありませんでした。しかし昨年、メインで使っていた CLion の学生ライセンスが切れそうだったこともあり、開発環境を Visual Studio Code に移行しました。それ以降、ターミナル使用する機会が増えたと思います。

ある日私は、ターミナルを起動した際に警告文が出ていることに気がつきました。

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.

調べてみると、macOS Catalina の時代から標準シェルが zsh に変わっていたそうです。セキュリティ面や機能面から zsh をオススメする記事も多く見ました。さらに mac では iTerm2 という端末アプリがいいらしい。この際だから UI もいろいろとカスタマイズしたい。

ということで、以下では私が

bash + 純正ターミナル → zsh + iTerm2

にお引越しした流れを書いていきます。環境は macOS Big Sur on MacBook です。

やったこと1: zsh をデフォルトにする

上記の警告文に書かれている通り、

chsh -s /bin/zsh

を実行して簡単に移行できました。ターミナルを再起動すると zsh シェルが立ち上がります。

やったこと2: 設定フレームワークを使う

フレームワークとは、 zsh のカスタマイズ設定を管理するためのものです。私は Prezto を用いましたが、インターネット上では oh-my-zsh を使用している記事も多く見られました。

公式サイトの README に従って、問題なく導入できました。

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

…いや。実際に私がこのコマンドを使った際は、 setopt でエラーが出ました。理由はデフォルトシェルの設定をした後に再起動をしなかったこと。つまり、 bash のまま作業をしていたので怒られました。
公式に書いてある通り、いったんコマンドで zsh を起動してから作業→最後にデフォルトシェル切り替えとした方がヒューマンエラーが少なくなるのでしょうか…

とにかく、chsh -s /bin/zsh と打っただけでは起動中のシェルは bash のままです。ご注意を。

まとめ

必要な作業をまとめると

# zsh を起動
zsh

# フレームワーク Prezto を導入
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"


# zsh の設定ファイルを生成
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
 ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

# zsh をデフォルトに変更
chsh -s /bin/zsh

となります。その後アプリを再起動するか、新しいウィンドウやタブを開けば zsh が立ち上がるようになります。

本当は iTerm2 の設定まで書こうと思ったのですが、長くなると公開を先延ばしにする言い訳になってしまいそうなので、いったんここまでで投稿します。次回は Prezto を使った詳細設定や iTerm2 について書きます。

読んでいただいてありがとうございました。よろしければスキしていただけると、励みになります。

* * * * *

追記。note でもシンタックスハイライトできるんですね!少し感動しました笑

この記事が気に入ったらサポートをしてみませんか?