9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

anyenvでtfenvを使うときのエラーを抑止する

Last updated at Posted at 2020-05-06

どんな問題の記事?

以下のような症状の方のための記事です。

  • tfenvanyenv経由でインストールしている。
  • 新しいシェルを起動したとき、以下のような出力がある。
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

対処法は?

以下の2つからお好みの方法で対処できます。

対処法1. anyenv-tfenv-init を使う

簡単に対処したいなら(拙作で申し訳ないのですが) anyenv-tfenv-init をインストールすることで対処できます。
これは以下の手順で実行できます。


mkdir -p $(anyenv root)/plugins
git clone https://github.com/rugamaga/anyenv-tfenv-init.git $(anyenv root)/plugins/anyenv-tfenv-init

対処法2. PATH の通ったディレクトリに tfenv-init を作る

もしくは PATHの通ったディレクトリにtfenv-init というシェルスクリプトを配置することで対処できます。

たとえば ~/bin にパスを通しているなら

echo '#!/usr/bin/env bash' > ~/bin/tfenv-init
chmod +x ~/bin/tfenv-init

とすることで対処できます。

なぜこれが起きているの?

anyenv は、そこで取り扱うことができる各 .*env に、 init というサブコマンドがあることを期待する作りになっています。
これはシェルの起動に伴って tfenv init というコマンドが呼び出されることを意味しています。
ところが tfenv 側には init サブコマンドがありません。
そのため tfenv init がエラーとなり、起動時に問題の表示(=tfenvのusage)が出てしまいます。

なぜこれが対処になるの?

実は tfenv のサブコマンドは利用者で拡張することができます。
そのためには PATHの通ったディレクトリに tfenv-(作りたいサブコマンド) という形式の実行ファイルを置きます。
今回は init というサブコマンドを実装してしまえばよいです。そこで対処法2では tfenv-init を作ってしまうことで対処しています。

またanyenvplugins には実行パスが通ります。
そこで対処法1では tfenv-init を内蔵させた anyenv-tfenv-init というanyenvのプラグインをインストールしました。

長期的には?

upstreamの tfenvanyenv のリポジトリに、この問題を議論するIssueはすでにあります。
しかし動きがないまま1〜2年ほど経っています。

https://github.com/tfutils/tfenv/issues/53
https://github.com/anyenv/anyenv/pull/81

解決したらanyenv-tfenv-init側は「このプラグインを消すのだ。」というアラートを出そうと思っています。

9
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?