D.

プラガブルに拡張可能な zshrc を書きたくなったので、書いた。

zsh は zcompile コマンドにより中間バイトコードをあらかじめ生成し起動の高速化を図ることができる。だが一人で複数ユーザーを利用したりしていると、いちいち各ユーザーごとに zcompile するのがダルイし、どうせなら /etc/zsh あたりに共通のファイルを置きたい。また、ちょっとしたコード片を追加するときに plugins ディレクトリに放り込んでそのまま拡張できる仕組みが欲しい。 .zshrc を編集してもいいのだが、変更部分だけ独立していたほうが管理も楽になるだろう。このあたりの問題解決を目的としている。

目的

  • 中間バイトコードをシェアして zsh の起動を高速化する。
  • プラガブルに .zshrc を拡張できる。 (コード片を plugins ディレクトリに放り込めば即反映)
  • インストール先を指定できる。 (sudo が使えても使えなくても OK)

ソースコード

https://github.com/id774/dot_zsh

インストール方法
cd
git clone git://github.com/id774/dot_zsh.git # リポジトリからチェックアウトする
~/dot_zsh/install_dotzsh.sh # インストーラーを実行
cp ~/dot_zsh/dot_zshrc ~/.zshrc # .zshrc を上書きする (または vim などで切り貼りする)

解説

インストール

基本的には sudo を内部的に利用して /etc/zsh 配下にインストールする。インストーラーである install_dotzsh.sh の第一引数にインストール先を指定することができる。第二引数に nosudo を指定すると sudo を利用しない。

例: ~/.zsh/ 配下にインストールし sudo は利用しない。

~/dot_zsh/install_dotzsh.sh ~/.zsh nosudo
ディレクトリ構成
  • /etc/zsh/lib … 全体をロードしたり screen を起動したりする。ここは基本的にいじらない。
  • /etc/zsh/plugins … システム管理者が .zsh ファイルを追加すれば自動的に読み込み対象となる。


基本的には上記の通り。これ以外に ~/.zsh/lib や ~/.zsh/plugins を利用することもできる。

  • ~/.zsh/lib … 中核となる load.zsh base.zsh screen.zsh をカスタマイズしたいときに使う。ここにディレクトリがある場合 /etc/zsh/lib の下のファイルは読み込まれず、こちらにあるものが利用される。
  • ~/.zsh/plugins … プラグインをユーザーレベルで管理したいときにここに入れる。ここにディレクトリがある場合 /etc/zsh/plugins のプラグインの下のファイルは読み込まれず、こちらにあるものが利用される。
デフォルトの動作
動作確認
参考にしたモノ

世界には oh-my-zsh とかいう異常な zshrc があるのだが、これはちょっとやりすぎ感があるのと、テーマなんてどうせひとつしか使わないのに大量にあるのが無駄な気がしたので、ベースはひとつ、拡張したい部分だけプラグインで上書きして解決する、といった方針にした。思いつきで一日か二日程度で書いてみた。