anyenv で tfenv を入れると init でエラーが出るので回避する
数多ある *env 系のツール導入をぐっと簡単にしてくれる anyenv ですが、現行バージョン (1.1.1) では、tfenv を導入すると、シェルログイン時にエラーが出るようになります。
No such command 'init' Usage: tfenv <command> [<options>] Commands: install Install a specific version of Terraform use Switch a version to use uninstall Uninstall a specific version of Terraform list List all installed versions list-remote List all installable versions
anyenv はログイン時、導入されている *env すべての init
サブコマンドを順に実行するのですが、 tfenv には init
サブコマンドがないのでエラーとなるようです。
修正 PR も上がっているようなのでそのうち取り込まれると思いますが、当面の回避方法のメモ。
ここでは、Mac で homebrew を使って anyenv をインストールした前提で書きます。
anyenv のインストール先を確認
% brew ls anyenv /usr/local/Cellar/anyenv/1.1.1/bin/anyenv /usr/local/Cellar/anyenv/1.1.1/completions/ (3 files) /usr/local/Cellar/anyenv/1.1.1/libexec/ (14 files)
で、 libexec
以下の anyenv-init
を修正します。
% cp /usr/local/Cellar/anyenv/1.1.1/libexec/anyenv-init /usr/local/Cellar/anyenv/1.1.1/libexec/anyenv-init.backup % vim /usr/local/Cellar/anyenv/1.1.1/libexec/anyenv-init
修正内容は以下のような感じ。
% diff -up /usr/local/Cellar/anyenv/1.1.1/libexec/anyenv-init.backup /usr/local/Cellar/anyenv/1.1.1/libexec/anyenv-init --- /usr/local/Cellar/anyenv/1.1.1/libexec/anyenv-init.backup 2020-01-26 22:57:10.000000000 +0900 +++ /usr/local/Cellar/anyenv/1.1.1/libexec/anyenv-init 2020-01-26 22:59:09.000000000 +0900 @@ -140,5 +140,5 @@ for env in $(anyenv-envs); do ;; esac - echo "$(${ENV_ROOT}/bin/${env} init - ${no_rehash_arg}${shell})" + [ "${env}" != 'tfenv' ] && echo "$(${ENV_ROOT}/bin/${env} init - ${no_rehash_arg}${shell})" done
homebrew を使わず git clone
でインストールした場合は、 .anyenv/libexec/anyenv-init
を同じように修正すればOKです。
本当はちゃんと 「init のない *env」を判定したいところなんですが、まあ一時的な回避策ということで。