rosu 的博客

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

2017-08-04

OS: Win10
Shell: Babun 1.2.0

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

1
compdef: unknown command or service: git

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

1
2
3
compdef: unknown command or service: git
compdef: unknown command or service: grep
compdef: unknown command or service: git

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

解决方法

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

1
2
rm -f ~/.zcompdump
compinit

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

Cygwin 中解决方法

执行:

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

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


参看

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章