zinitでeval dircolorsを使って色定義をする時はシングルクオートを使う
生産性向上の為自分の.zsh.dをsubmoduleでlibを管理する方法からzinitを使うように書き換えていました.
これはzinitで読み込むだけだと設定出来なくてdircolors
を実行してその結果をeval
で読み込む必要があります.
zinitにはatload
があるのでそこに単に設定したらエラーが出てきました.
カレントディレクトリが.zsh.d
に設定されてしまったようです.
ls
とかだとちゃんとzinitが作るディレクトリになるのにどうして…?
と思ったらダブルクオート""
を使ってatload
に値を渡していたのが悪かったようです.
eval
はダブルクオートだとその時点で展開を行ってしまうようですね.
以下のようにシングルクオートで設定したらうまくいきました.
zinit ice atload'eval `dircolors $PWD/dircolors.256dark`'
zinit light seebi/dircolors-solarized
いやー正直シェルスクリプトは何時までたってもよく分かりません.