Mac OS zsh: command not found XXX 的原因和解决方法

因为MacOS Catalina默认使用了zsh的Shell语言,系统更新后可能会导致部分命令出现找不到的情况

 command not found XXX

之前在网上没有找到可用的方法,今天终于解决了,所以分享出来,节省大家找问题的时间

原因

导致命令不可用的真正原因是zsh和bash的默认环境变量配置文件地址不一致导致的。
比如我一般习惯把环境变量配置到 /etc/profile 中,这应该也是大多数有linux的bash操作习惯的人喜欢配置的路径。
但是zsh的默认并没有读取/etc/profile的环境变量,所以导致之前在环境变量配置的环境失效了。

解决方法

知道原理之后解决就很简单,我们找到zsh的新环境变量配置文件并打开

vim ~/.zshrc   

这时候就可以看到zsh的配置信息

#Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
export PATH="$PATH:$HOME/.rvm/bin"

如果没有找到该文件的话,直接创建一个也是可以的
我们只要在这里去引入之前的配置文件就可以了,以下是配置后的.zshrc文件

#Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
export PATH="$PATH:$HOME/.rvm/bin"
source ~/.bash_profile
source /etc/profile

之后在source一下.zshrc文件或者重新启动一个终端,就没问题了

source ~/.zshrc   

这样问题就基本解决了

总结

总而言之是问题出在bash shell 与 zsh shell 的不同点导致的,之前常看网上说所谓的“完全兼容”,现在想想过于可笑,毕竟不是由一个项目更新的,所谓的兼容更像是在应用层面模仿bash。
当然,如果zsh比bash更加好用,我们也应该去尝试新事物。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐