Zsh
zshDay 17

Antigenのantigen useは何をやっているのか

More than 3 years have passed since last update.

Antigenというzshのプラグインマネージャーがある。これはzshのプラグインを管理してくれるツールで、zshプラグインのインストール、更新が簡単になる。RubyのbundlerとかVimのNeoBundleにあたるやつ。

それで、ドキュメントとかブログの記事とかを見てると、次のようにantigen use oh-my-zshを呼び出せって書いてある。

antigen use oh-my-zsh

適当にコピペしてこれを書いてる人もいると思うけど、このantigen useが何をやっているのかを解説する。

ソースコードを追いかけてみると、これは結局、次のコードと同じになる。

antigen bundle https://github.com/robbyrussell/oh-my-zsh.git lib

つまり、GitHubにあるoh-my-zshのlibディレクトリ以下を取得して、その下にあるファイルをぜんぶ読み込む(sourceする)、ということをやってる。

なんでこんなことをやってるかというと、oh-my-zshのpluginsthemesの中にはこのlib以下にあるスクリプトに依存しているやつがあるから。そういうのは単独では動作しないので、こうやってlib以下を読み込む必要がある。なのでoh-my-zshのpluginsやthemesを使ってない人には必要ない。

まあ、oh-my-zshのpluginsやthemesもlibに依存していないやつもあるし、依存していたとしてもlib以下全部が必要ではないので、こんなふうにまとめて読み込むっていうのはあんまりきれいなやり方ではないと思う。

だいたい、lib/aliases.zshを見てみるとalias ll='ls -lh'とやってたりとか、とてもライブラリとは言えない感じなので、これをlibっていうディレクトリに全部入れてるのはどうなのっていう疑問はある。

まあ、そのへんはoh-my-zsh本体のお話なので、ここでは深入りしない。


推奨されない書き方

だいぶ前からAntigenを使ってる人はこんな書き方してるかもしれない。

# 悪い例

antigen-lib

これは古い書き方で、antigen use oh-my-zshと同じ処理が行われるけど、こんなふうに警告メッセージが表示される。


`antigen-lib` is deprecated and will soon be removed.

Use `antigen-use oh-my-zsh` instead.


antigen-libは古い書き方でそのうちなくなるので、antigen use oh-my-zshと書け」ということらしい。古い書き方をしてる人は直しておこう。