已正常使用的Heroku CLI登录时提示命令不存在,执行brew也报错
故障原因定位
两个报错属于连锁触发问题,并非独立故障,核心诱因分为三点:
- Homebrew核心启动文件失效
运行brew时报错缺失的/usr/local/Library/Homebrew/brew.sh,是旧版本Intel架构Mac上Homebrew的核心启动脚本。不管是Homebrew自动升级后目录结构变动、误删/usr/local下的Homebrew核心目录、还是系统升级清理了该路径下的无效文件,只要这个脚本不存在,就算在PATH中添加再多路径,执行brew时都会报错。
关键提示 你PATH中配置的/usr/local/Homebrew/bin下的brew命令本质是软链接,指向的目标就是已经丢失的brew.sh文件,目前这个软链接已经处于失效状态,这也是你配置了PATH仍无法运行brew的根本原因,并非路径配置本身不生效。 - Heroku CLI报错的连带影响
四个月前安装的Heroku CLI,大概率是通过Homebrew渠道安装的。Homebrew核心文件丢失后,对应安装的heroku可执行软链也会同步失效,最终导致zsh返回command not found: heroku的错误,并非heroku程序被意外删除。 - 现有环境配置的固有问题
路径配置本身存在两处硬伤,进一步放大了故障影响:- 配置生效域不匹配:当前终端运行在zsh环境,但你修改的是
~/.bash_profile,zsh默认不会主动加载bash的配置文件,就算PATH书写完全正确,zsh也不会识别这些配置。 - 路径配置书写错误:
JAVA_HOME的配置多拼接了/bin/apt后缀,正确的JAVA_HOME应指向JDK根目录,这个错误暂时不影响当前报错,但会导致Java相关程序无法正常调用环境变量。
- 配置生效域不匹配:当前终端运行在zsh环境,但你修改的是
分步修复操作
- 校验文件实际状态:打开
/usr/local/Homebrew目录,逐层确认是否存在Library/Homebrew/brew.sh文件,明确核心文件是否真的丢失。 - 打通zsh配置加载逻辑:在
~/.zshrc文件末尾添加source ~/.bash_profile,保存后执行source ~/.zshrc让配置即时生效,解决zsh不识别bash路径配置的问题。 - 修复损坏的Homebrew安装:如果确认
brew.sh文件确实不存在,直接运行Homebrew官方安装脚本完成覆盖修复,不要手动新建文件或修改软链指向。 - 重新安装Heroku CLI:Homebrew恢复正常后,先执行
brew update对齐当前版本的目录结构,再重新安装heroku CLI,修复之前连带失效的heroku可执行软链,安装完成后执行heroku --version确认能正常输出版本信息,再重新执行登录操作即可。
内容的提问来源于stack exchange,提问作者devgirl
相关产品推荐
相关产品推荐

