さわらブログ

さわら(@xhiroga)の技術ブログ

pyenv のエラー line 21: /usr/local/Cellar/pyenv/1.2.15/libexec/pyenv: No such file or directory → zshに切り替えたときに pyenv initを追記し忘れ

TL;DR

pyenvのshimsディレクトリは、シェル起動時の pyenv init コマンドで作成されるようです。
(もちろん毎回作っていてはたまらないのでいい感じに冪等な仕組みがあるのでしょうが)

zshに切り替えたときに pyenv (あと rbenv)の設定を忘れていました。
それで昨日Ruby動かなかったのか...

if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi
eval "$(rbenv init -)"

経緯

実はzshに切り替えたあともしばらくは動いていたんですが、 brew update pyenv したときにだめでした。
.../shims/python のファイル内にpyenvのパスをバージョン名指しで書いているスクリプトがあり、それが pyenv initで最新に保たれるからです。

こういうの素早く気付けるように、dotfilesを一つのディレクトリでいつでも見やすくしておくのは大事ですね。
しかし環境切替時は互換テストすべきだな。反省...。