https://github.com/sstephenson/rbenv では、rbenv を
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
のように設定すると書いているが、私はちょっとひねって以下のように設定している。
# /etc/profile.d/rbenv.sh
if [ -d "$HOME/.rbenv" ]; then
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init --no-rehash -)"
fi
ポイントは2点あって、
- /etc/profile.d/rbenv.sh に設定を書く
- eval "$(rbenv init --no-rehash -)" のように --no-rehash を付ける
理由としては
- は /etc/profile.d ならばファイルの分割ができ、~/.bash_profile よりも綺麗に整理できるため。また >> で追記する必要がないので、冪等性を保ちやすくプロビジョニングツールで設定を記述しやすいため。
- は rbenv init - はデフォルトでは rbenv rehash もするが、rbenv rehash は時間がかかるので(下手すると 0.5 sec とかかかる)、ログインのたびにイライラすることになってしまうため。rbenv rehash は bin を持つ新しい gem を入れた時にのみやれば良いので、ログインのたびにやるのはやり過ぎ感しかない。