Mac每次打开新终端窗口都出现两个报错,该如何排查修复?
Mac终端启动双报错修复方案
报错复现信息
报错1:
no such file or directory: /dev/fd/12export(中文翻译:没有该文件或目录:/dev/fd/12export)
报错2:thread 'main' panicked at 'failed printing to stdout: Broken pipe (os error 32)'(中文翻译:主线程异常退出:向标准输出打印内容失败:管道中断(操作系统错误 32))
修复步骤
第一步:定位配置语法错误
第一个报错本质是shell配置文件漏写换行导致的语法问题:原本两行独立的配置(前一行末尾指向/dev/fd/12的逻辑、后一行的export配置)被合并成了一行,系统无法识别拼接后的路径。
- 先确认你当前使用的shell,执行命令:
echo $SHELL- 若输出
/bin/zsh,检查三个配置文件:~/.zshrc、~/.zprofile、~/.profile - 若输出
/bin/bash,检查三个配置文件:~/.bashrc、~/.bash_profile、~/.profile
- 若输出
- 执行检索命令快速定位错误行:
找到内容连在一起的行后,在grep -n "12export\|export" ~/.zshrc ~/.zprofile ~/.profileexport前添加换行拆分两行即可。
第二步:修复管道中断报错
第二个报错是配置文件中某条命令执行时,输出管道被提前终止导致,大概率和brew安装的Rust开发的命令行工具、或是你配置的自动执行脚本(如composer全局路径加载、node版本管理脚本、Git相关自动命令)有关。
- 先临时注释配置文件中最近新增的内容(你安装php、node、composer、配置SSH后添加的配置行),每次注释1-2行后新开终端验证,直到报错消失即可定位到问题命令。
- 常见问题场景:
- 配置中存在输出类命令加管道截断的逻辑,如
cat xxx | head类的写法执行异常 - 自动补全脚本、oh-my-zsh第三方插件调用异常
- brew安装的工具的初始化脚本版本兼容问题,可执行
brew upgrade更新对应工具后重试
- 配置中存在输出类命令加管道截断的逻辑,如
第三步:验证修复
修改完成后执行对应配置的加载命令,再新开3-5个终端窗口确认无报错即可:
- zsh用户执行:
source ~/.zshrc - bash用户执行:
source ~/.bashrc
内容的提问来源于stack exchange,提问作者Jannis M.
相关产品推荐
相关产品推荐

