Zsh + Prezto の設定ファイルを整理する


概要

Zsh + Prezto の設定ファイル( .zshrc.zlogin など)を1つのディレクトリにまとめて整理する方法です。 Prezto を使っているとこれらのファイルはシンボリックリンクになっているため、ただ移動するだけでは読み込めなくなってしまいます。そこで、シンボリックリンクの貼り直しなどの必要な手順をまとめました。

目標

すべてのファイルがホームディレクトリにあるデフォルトの状態から、このようなディレクトリ構造にしたい。

/Users/ttsutchi
├── .zshenv   # .zsh.d以下を読み込む
└── .zsh.d   # .zshenv以外の設定ファイルを格納するディレクトリ
    ├── .zprezto   # 以下のファイルの実体やプラグインなどが格納されているディレクトリ
    ├── .zshenv   # これらのファイルは.zprezto/runcoms/にある実体のシンボリックリンク
    ├── .zshrc
    ├── .zlogin
  ︙
    その他.zファイル

実行環境

MacOS High Sierra 10.13.6
Zsh 5.6.2
Prezto

手順

ホームディレクトリで作業していきます。

.zsh.d ディレクトリの作成

設定ファイルを格納するディレクトリを作成します。ここでは .zsh.d とします。

terminal

$ touch .zsh.d

.zprezto.zsh.d ディレクトリに移動

Prezto の本体である .zprezto.zsh.d に移動させます。

terminal

$ mv .zprezto .zsh.d

それ以外のファイルを削除(もしくは移動)

.zcompdump を削除します。 .zhistory も削除したいのですが、すぐに再生成されてしまうため、すべての移行が完了してから最後に削除することにします。(どちらも再生成されるので削除しても問題ないですが、 .zsh.d に移動させることもできます)

terminal

$ rm .zcompdump .history

シンボリックリンクも削除

zshenv.zshrc などのファイルはシンボリックリンクなので、 unlink コマンドで削除します。

terminal

$ unlink .zlogin .zlogout .zpreztorc .zprofile .zshenv .zshrc

.zshenv を新たに作成

Zsh 起動時に最初に読み込まれる .zshenv を新たに作成します。

terminal

$ touch .zshenv

環境変数 ZDOTDIR の設定

以下の2行を先ほど作成した .zshenv に記述して、 .zsh.dZDOTDIR として指定します。

.zshenv
export ZDOTDIR=$HOME/.zsh.d
source $ZDOTDIR/.zshenv

以下のコマンドを実行すれば記述できます。

terminal

echo -e "export ZDOTDIR=$HOME/.zsh.d\nsource $ZDOTDIR/.zshenv" >> .zshenv

シェルを再起動

.zshenv を読み込むために、以下のコマンドを実行するかターミナルを再起動することで Zsh を再起動します。

terminal

$ zsh

シンボリックリンクを貼り直す

以下のコマンドを実行して、 .zprezto の中にある .zshrc などのファイルのシンボリックリンクを .zsh.d に貼ります。4行を一度に実行することに注意。

terminal

$ setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

シェルを再起動

今貼ったシンボリックリンクを読み込むために、最後にもう一度以下のコマンドを実行するかターミナルを再起動することで Zsh を再起動します。

terminal

$ zsh

ホームディレクトリの .zhistory を削除

.zhistory.zsh.d に生成されるようになったので、最後に残ったホームディレクトリの .zhistory を削除します。

terminal

$ rm .zhistory

確認

設定ファイルが読み込まれ、テーマやプラグインなどが反映されていればOKです。

トラブルシューティング

・以下のようなメッセージが出たときは、 q で進みます。

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
~/.zsh.d).  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 ~/.zsh.d/.zshrc containing just a comment.
     That will prevent this function being run again.

(1)  Continue to the main menu.

参考

・Prezto
https://github.com/sorin-ionescu/prezto