kubectl completionの遅延実行によるzshの起動時間短縮
kubectl
にはシェルの補完機能が用意されています。 .zshrc
で補完機能を有効化するとzshの起動に時間がかかるため、補完機能の有効化を遅延実行するようにしてみました。
具体的には、 kubectl
コマンドの初回実行時のみ source <(kubectl completion zsh)
を実行します。
function kubectl () { local kubectl="$(whence -p kubectl 2> /dev/null)" [ -z "$_lazy_kubectl_completion" ] && { echo "\e[31m$0 completion zsh\e[0m" > /dev/stderr source <("$kubectl" completion zsh) _lazy_kubectl_completion=1 } "$kubectl" "$@" }
初回実行時:
% time ( kubectl ) kubectl completion zsh kubectl controls the Kubernetes cluster manager. ... ( kubectl; ) 0.98s user 0.38s system 115% cpu 1.168 total
2回目以降:
% time ( _lazy_kubectl_completion=1 kubectl ) kubectl controls the Kubernetes cluster manager. ... ( _lazy_kubectl_completion=1 kubectl; ) 0.13s user 0.02s system 111% cpu 0.141 total
zshの起動に1秒近くかかってしまう問題を解決できました。もっとスマートな解決法を知っていたら教えてください。
- 作者: Kelsey Hightower,Brendan Burns,Joe Beda,松浦隼人
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/03/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る