CLIでタブ補完をしようとすると"_values:compvalues:11: not enough arguments" と表示されてしまうケース
myuser@MyMacBookPro ~ % nova index|↦
_values:compvalues:11: not enough arguments
myuser@MyMacBookPro ~ % nova index|
これはZSHシェルに組み込まれている補完機能とnova
CLIツールとがコンフリクトしている場合に起こります。
なぜ起こるのか
調査の結果恐らく、Oh-My-ZSH フレームワークをZSHシェルと共に使用した場合に起こります。
ZSHは、将来インストールされるであろうコマンドのための補完機能が組み込まれています。このうちの一つはウェブプラットフォームのOpenStackスイート用サブコマンドopenstack nova
で、OpenStack Computeプラットフォーム(nova
という名前で知られているもの)のためのものです。
これに対応するため、Novaはnova
ツールと共に、/usr/local/share/zsh/site-functions
ディレクトリにZSH補完機能用追加ファイルをインストールします。このファイルはZSHにOpenStackツールがインストールされているかどうかを確認するよう指示します。インストールされていない場合は常に、nova
コマンド内で補完する際にコマンドラインツールを使用します。インストールされている場合はZSHによってどのようにするかが尋ねられます。
またZSHはシェルをできるだけ高速にするため、_事前計算(pre-compute)_しようとします。そのため、Oh-My-ZSHがインストールされる前に構築された事前計算された補完がZSH .zcompdump
ファイルで構文エラーを引き起こす場合があります。これによりZSHのための補完用追加ファイルが参照されず、常にこの問題が発生してしまいます。
解決するには
最も簡単な方法は、ホームディレクトリからZSH補完ファイルのキャッシュを削除することです。これらは隠しファイルで、.zcompdump
で始まるファイル名を持っています。キャッシュをクリアすることで必要に応じて再構築され、nova
ツールが適切に含まれるようになります。
以下の状況ではこのキャッシュクリアが効果的です:
nova
のインストール直前直後にOh-My-ZSHがインストールされたケース- Oh-My-ZSHのインストール直後に
nova
が既にインストールされているケース
キャッシュファイルは通常、ユーザが編集することを意図していない補完機能のためのキャッシュであり、削除しても問題ありません。
これらのファイルはターミナルコマンド: rm ~/.zcompdump*
でも削除可能です。