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に埋め込むしかないことがわかった。
最後に
本当にこれでいいのかよくわからない
やらなくてもよくなったら消したいけど、やらなくてもよくなるタイミングって確認しづらいなぁ。