为什么zsh无法执行命令compdef?

时间:2019-10-08 09:32:41

标签: zsh ubuntu-18.04 kubectl

我已经在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

不幸的是,这不能解决我的问题。我还能做些什么来解决我的问题?甚至还可以:我该怎么做才能找出导致问题的原因?

6 个答案:

答案 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后该问题已解决:

  1. 删除了我的旧版本rm -rf ~/.oh-my-zsh
  2. https://github.com/ohmyzsh/ohmyzsh安装

答案 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

最后重启终端。

希望这对某人有所帮助。