当我使用像iTerm或Hyper这样的终端时,就在我启动时,我得到的第一条消息是:
complete:13: command not found: compdef
我不知道这是什么,以及如何摆脱它。但是,此消息不会显示在默认终端应用程序上。
我正在使用zsh。
zsh
实际上是提到过,任何搜索错误消息的人都可以从答案中学到一些东西。
当我使用像iTerm或Hyper这样的终端时,就在我启动时,我得到的第一条消息是:
complete:13: command not found: compdef
我不知道这是什么,以及如何摆脱它。但是,此消息不会显示在默认终端应用程序上。
我正在使用zsh。
zsh
实际上是提到过,任何搜索错误消息的人都可以从答案中学到一些东西。
Answers:
经过更多的研究,我找到了答案。我的.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标签完成。
这与我在mac OS上遇到的问题相同。我正在使用zsh shell。
Compdef基本上是zsh用于加载自动完成的函数。需要激活完成系统。如果你正在使用类似的东西 哦,我的-的zsh 然后这已经处理好了,否则你需要在〜/ .zshrc中添加以下内容
autoload -Uz compinit
compinit
完成功能可以直接使用compdef函数手动注册,就像这个compdef一样。但是在使用compdef之前,compinit需要在上下文中自动加载。
这取决于您为系统设置的默认(登录)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。
bash
?