Posted at

aws-cli + zshでcomplete:13: command not found: compdefが出る場合の対応

More than 3 years have passed since last update.

AmazonLinux上でyumでインストールできる最新(2016/1/12現在)のzsh(5.0.2)とaws-cli(1.9.11)の組み合わせでログイン時に「complete:13: command not found: compdef」というエラーメッセージが出て気持ち悪いので出ないようにする。


対応内容

$ touch ~/.zshenv

$ echo 'autoload -Uz compinit
compinit'
>> ~/.zshenv


原因など


発生場所

/etc/zprofile



/etc/profile.d/aws-cli.sh



/usr/share/zsh/site-functions/aws_zsh_completer.sh

最終行のcomplete関数の呼び出し



/usr/share/zsh/5.0.2/functions/bashcompinit

complete関数の13行目

complete関数呼び出し前にcompdef関数が定義されていないのが問題!


compdefが定義されている場所

/usr/share/zsh/5.0.2/functions/compinit の234行目

実行前にcompinitを読み込む必要がある


/etc/zprofile の読み込み前に行うにはどうしたらいいか

zshの設定ファイルの読み込み順序と使い方Tipsまとめを参考に検討。

読み込まれる順番を考慮するとユーザー権限で行うには~/.zshenvに埋め込むしかないことがわかった。


最後に

本当にこれでいいのかよくわからない

やらなくてもよくなったら消したいけど、やらなくてもよくなるタイミングって確認しづらいなぁ。