我已经在Ubuntu 18.04上安装了zsh和oh zsh。我想对kubectl使用自动补全功能。因此,我已将source <(kubectl completion zsh)
添加到我的〜/ .zshrc文件中。
执行此脚本时,zsh出现以下错误:
complete:13: command not found: compdef
kubectl文档指出,当出现上述错误时,应将以下内容放在.zshrc文件的顶部:
autoload -Uz compinit
compinit
这样做并重新启动终端后,出现相同的错误。
在git问题中,我发现以下内容可以帮助遇到常见问题的人:
#This will perform chmod g-w for each file returned by compaudit to remove write access for group
compaudit | xargs -I % chmod g-w "%"
#This will perform chown to current user (Windows and Linux) for each file returned by compaudit
compaudit | xargs -I % chown $USER "%"
#Remove all dump files (which normally speed up initialization)
rm ~/.zcompdump*
#Regenerate completions file
compinit
zsh在运行脚本时记录以下内容:
kubescript:12457: command not found: _bash_comp
不幸的是,这不能解决我的问题。我还能做些什么来解决我的问题?甚至还可以:我该怎么做才能找出导致问题的原因?
答案 0 :(得分:8)
我通过在.zshrc中使用以下代码解决了该错误:
# K8s auto-complete
autoload -U +X compinit && compinit
source <(kubectl completion zsh)
如果您使用oh-my-zsh,也可以使用oh-my-zsh plugin进行操作。
答案 1 :(得分:6)
我遇到了同样的问题,并且通过更新nvm得以解决
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
答案 2 :(得分:0)
就我而言,重新安装oh-my-zsh后该问题已解决:
rm -rf ~/.oh-my-zsh
答案 3 :(得分:0)
对于OSX 10.15.7
,我做了类似的事情
vi ~/.zshrc
alias k=kubectl
autoload -U +X compinit && compinit
[[ /usr/local/bin/kubectl ]] && source <(kubectl completion zsh)
像魅力一样工作!
答案 4 :(得分:0)
我确实在这里尝试了所有答案,但没有任何效果。
因此,我尝试本教程时要注意最后的观察:
”“注意:请确保在调用compdef之前添加了此代码段,否则您仍然会看到错误”
我在〜/ .zshrc和〜/ .bash_profile文件中从Terraform安装进行了一次完整的通话。
https://thysmichels.com/2020/07/16/mac-solved-command-not-found-compdef/
答案 5 :(得分:0)
在尝试了很多选择并经历了不同的步骤之后。运行以下命令后,它对我有用
autoload -Uz compinstall && compinstall
这将配置 ~/.zshrc 并通过添加以下两行来初始化 compinit:
autoload -Uz compinit
compinit
然后在 link
中提到的 sudo 命令下运行$ sudo chmod -R 755 /usr/local/share/zsh
$ sudo chown -R root:staff /usr/local/share/zsh
$ compaudit | xargs chmod g-w
最后重启终端。
希望这对某人有所帮助。