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の原理としては、

  1. asdf管理のツール実行時に.asdf/shim/ 内の各ツールごとに固有のシェルスクリプトを実行
  2. 1のシェルスクリプトにより exec asdf exec <tool名> <toolごとの引数> を実行

だが、2の asdf のパスが正しくないためにエラーになっていたようだ。

修正方法

.asdf/shim/ の中身を削除 (バックアップとしてどこかに移動) し、asdf reshim を実行すると、それぞれのシェルスクリプトが再構築され正常なパスを指定してくれる。

参考(https://github.com/asdf-vm/asdf/issues/1147#issuecomment-1006067709)