修复 oh-my-zsh 和 Git 的搭配错误

2017-08-04

OS: Win10 Shell: Babun 1.2.0

这个问题发生在我执行Git命令之后,错误提示为:

compdef: unknown command or service: git

如果执行 zsh 命令,会直接输出.zshrc文件内容并且有以下提示:

compdef: unknown command or service: git
compdef: unknown command or service: grep
compdef: unknown command or service: git

这个问题可能是 Git 版本相关,具体原因不清楚,由此引发的 zsh 运行出错。

解决方法

在 oh-my-zsh 的 issue 中有很多人有如下解决方法:

rm -f ~/.zcompdump
compinit

zsh-doc里面介绍了compinit.zcompdump之作用,大家可以自行查阅。 我理解的意思就是,compinit为手动初始化zsh的命令,而为了加快zsh运行速度,zsh会自动生成一个.zcompdump文件进行使用。可能是类似于缓存文件的作用。 一般情况下,上述两个命令进行手动初始化之后就没问题。不过后来版本的zsh貌似会对.zcompdump进行重命名,也就是生成带有版本号的.zcompdump诸如:.zcompdump-modhelius-dell-5.0.2。 可能是在特殊环境下需要采用这样的做法,比如在 Cygwin 中。

Cygwin 中解决方法

执行:

compinit
cp .zcompdump .zcompdump-$HOSTNAME-$ZSH_VERSION

这样就生成了特定版本的.zompdump文件。此时应该就恢复正常了。


参看


Profile picture

rosu

An Android Developer.

GitHub Twitter icon