我的命令行说`完成:13:命令未找到:compdef`


5

当我使用像iTerm或Hyper这样的终端时,就在我启动时,我得到的第一条消息是:

complete:13: command not found: compdef

我不知道这是什么,以及如何摆脱它。但是,此消息不会显示在默认终端应用程序上。

我正在使用zsh。


我们可以假设您的$ SHELL是 bash
bmike

1
检查你的〜/ .bashrc和〜/ .bash_profile
Sairam

@Sairam这些应该加载到正常的终端应用程序中。 我来看看这个。
JMY1000

我投票结束,因为无论如何都无法从问题中猜到接受的答案。即没有提到zsh作为shell。我不知道这个问题如何帮助其他用户。答案涵盖了许多不同的事情,因为问题很糟糕。
Mark

1
@Mark我同意这个问题需要一些工作。但 zsh 实际上是提到过,任何搜索错误消息的人都可以从答案中学到一些东西。
nohillside

Answers:


5

经过更多的研究,我找到了答案。我的.zprofile中有一个块:

export NVM_DIR="/Users/Aaron/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

最后一行加载compdef。但是这样做会导致某种冲突。我需要做的就是评论出来:

# [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

而烦人的错误就消失了。最好的部分:我仍然有zsh标签完成。


4

这与我在mac OS上遇到的问题相同。我正在使用zsh shell。

Zsh Compdef error

Compdef基本上是zsh用于加载自动完成的函数。需要激活完成系统。如果你正在使用类似的东西 哦,我的-的zsh 然后这已经处理好了,否则你需要在〜/ .zshrc中添加以下内容

autoload -Uz compinit
compinit

完成功能可以直接使用compdef函数手动注册,就像这个compdef一样。但是在使用compdef之前,compinit需要在上下文中自动加载。


0

这取决于您为系统设置的默认(登录)shell,终端,iTerm。更新 bash 安装并设置为在其中一个中执行会产生不同的结果。

此错误来自您安装的所谓点文件。这些是前面有一个点(因此名称)的文件 .bashrc。这意味着它们对于Finder是不可见的并且是简单的 ls。 有问题的点文件在启动时由shell读取。它们包含说明,设置,自定义;可能是程序代码的一小部分。

并非所有用户主目录中的所有点文件都由shell读取。 bash读取的内容可能包括: .bash_history .bash_profile .bash_prompt .bash_sessions .bashrc .editorconfig .exports .functions .inputrc .profile (此列表并非详尽无遗)

这些文件可能是由您创建的,由您或某些程序(如fink,homebrew或ports)操纵。 您可能刚刚从网上复制了那些“升级”/个性化您的shell。

无论你如何到达目前的情况。从其他用户打开您的终端/ iTerm,可能无法观察到症状。

这意味着:所有这些文件在某种意义上都是“安全删除”:从某种意义上说它们对于运行终端或shell来说并不是必不可少的。如果它们确实包含您在日常工作中可能依赖的个性化设置,请对其进行备份。这方面的例子包括你的补充 $PATH 变量。如果没有这些,你可能会发现像fink这样的程序不再有效。

但是,您发布的实际错误消息表明两件事:

  • 点文件的组合内容无法完成他们应该做的事情。更确切地说:调用了一个指令(compdef)并且不可用。

  • 你很可能从网上的源代码中找到了一堆点文件 霍尔曼,点文件 。 这些包括一个具有完全相同的错误消息的错误。

因此,您应该查看当前用户的所有点文件,并仅保留您认为必要的内容(请记住备份)。然后,您可以再次使用源中的更新文件。但请记住,这些都非常“全面”。谨慎的做法是不要盲目地使用它们,并且实际测试并选择所有这些选项的子集。

盲目或不加区别地使用它们不仅可能导致问题,例如提示此问题的问题,还可能导致其他问题或故障排除建议。

更新: 这个答案是在问题的先前版本中给出的,该版本没有将zsh表示为使用的shell。 - >替换你在上面读bash的zsh。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.