dotfiles整理 その1:zshの構成を見なおそう
はじめに
最近ちょっと時間ができたので、随分放置してきたdotfilesを整理をすることにしました。
まずはzsh。
これまでは.zshrcに全て記述していたので、前々から役割毎に分けたいと思っていました。
大まかな方針は下記の通りです。
構成はこんな感じを想定しています。
/Users/kitakitabauer/. ├── .zshenv -> /Users/kitakitabauer/dotfiles/.zshenv ├── .zsh │ ├──.zprofile -> /Users/kitakitabauer/dotfiles/.zsh/.zprofile │ ├──.zshenv -> /Users/kitakitabauer/dotfiles/.zsh/.zshenv │ └──.zshrc -> /Users/kitakitabauer/dotfiles/.zsh/.zshrc └── …
環境変数 ZDOTDIR の設定
ホームディレクトリがzsh関連のファイルで埋まるのが嫌なので、ZDOTDIR を指定して、zsh関連の設定ファイルを別フォルダにて管理します。
ZDOTDIR は$HOME/.zshenv に記述します。
export ZDOTDIR=$HOME/.zsh source $ZDOTDIR/.zshenv
これで、$HOMEに置く必要があるのは.zshenvだけになります。
zshが起動時に読み込むファイルとその順番
zshには様々な設定ファイルがあり、それらは決まった順番で読み込まれます。
ログインシェルは下記の順番で読み込まれます。
/etc/zshenv $ZDOTDIR/.zshenv /etc/zprofile $ZDOTDIR/.zprofile /etc/zshrc $ZDOTDIR/.zshrc /etc/zlogin $ZDOTDIR/.zlogin
インタラクティブシェルは下記の順番で読み込まれます。
/etc/zshenv $ZDOTDIR/.zshenv /etc/zshrc $ZDOTDIR/.zshrc
ログインシェルとしてzshを使うので、前述の通り.zshenv、.zprofile、.zshrcの構成でいきます。
.zloginは今のところ使用しないので作成しません。
尚、全てのユーザに影響するため、etc配下の設定ファイルは変更しません。
それぞれの設定ファイルに何を記述するか
$ZDOTDIR/.zshenv
環境変数系。ヒストリー系もここで記述します。
$ZDOTDIR/.zprofile
ログインシェルだけで使いたいaliasを記述します。
$ZDOTDIR/.zshrc
上述以外の全てを記述します。
dotfilesのシンボリックリンク生成
最後にsymlink.shにて、gitリポジトリのdotfilesに対して、$HOMEにシンボリックリンクを貼ります。
basepath=$(cd $(dirname $0);pwd) # symlink dotfiles into ~files=.* for file in $files do if [ ! -d $file -a $file != "." -a $file != ".." -a $file != ".git" ] ; then ln -sf $basepath/$file ~ fi done # symlink zsh configuration files into ~/.zsh if [ ! -d ~/.zsh ] ; then mkdir ~/.zsh fi for file in .zsh/.* do if [ $file != "." -a $file != ".." -a $file != ".git" ] ; then ln -sf $basepath/$file ~/.zsh/ fi done
完成
まだ工事中ですが、一旦こんな感じになりました。
github.com
次の記事はこちら
kitakitabauer.hatenablog.com