asdfのバージョンを上げたらツールが実行できなくなった
エラー内容例
$ yarn
/Users/user/.asdf/shims/node: line 4: /opt/homebrew/Cellar/asdf/0.9.0/libexec/bin/asdf: is a directory
/Users/user/.asdf/shims/node: line 4: exec: /opt/homebrew/Cellar/asdf/0.9.0/libexec/bin/asdf: cannot execute: Undefined error: 0
原因
asdfの原理としては、
- asdf管理のツール実行時に
.asdf/shim/
内の各ツールごとに固有のシェルスクリプトを実行 - 1のシェルスクリプトにより
exec asdf exec <tool名> <toolごとの引数>
を実行
だが、2の asdf
のパスが正しくないためにエラーになっていたようだ。
修正方法
.asdf/shim/
の中身を削除 (バックアップとしてどこかに移動) し、asdf reshim
を実行すると、それぞれのシェルスクリプトが再構築され正常なパスを指定してくれる。
参考(https://github.com/asdf-vm/asdf/issues/1147#issuecomment-1006067709)