You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行source ~/.zshrc后zsh终端报错无法正常使用如何解决

问题描述

搭建React Native安卓开发环境配置环境变量时,按以下步骤操作后出现故障:

  • 执行vim ~/.zshrc打开zsh终端配置文件
  • 在配置文件中粘贴添加ANDROID_SDK_ROOT环境变量配置
  • 执行source ~/.zshrc尝试让新增配置立即生效

操作后终端输出如下报错:

/Users/username/.zshrc:source:26: no such file or directory: /Users/username/.zshrc#
/Users/username/.zshrc:source:26: no such file or directory: /Users/username/.zshrc#
/Users/username/.zshrc:source:26: no such file or directory: /Users/username/.zshrc#
/Users/username/.zshrc:source:51: too many open files: /Users/username/.zshrc
/Users/username/.zshrc:source:75: too many open files: /Users/username/.oh-my-zsh/oh-my-zsh.sh
/Users/username/.zshrc:source:108: too many open files: /Users/username/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
/Users/username/.zshrc:source:109: too many open files: /Users/username/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
/opt/homebrew/Library/Homebrew/prefix.sh: line 40: echo: write error: Bad file descriptor
/Users/username/.zshrc:source:112: no such file or directory: /nvm.sh
/Users/username/.oh-my-zsh/oh-my-zsh.sh:source:61: too many open files: /Users/username/.oh-my-zsh/tools/check_for_upgrade.sh
/Users/username/.oh-my-zsh/oh-my-zsh.sh:source:122: too many open files: /Users/username/.oh-my-zsh/lib/compfix.zsh
compinit:503: cannot duplicate fd 0: too many open files
/Users/username/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh:31: write error: bad file descriptor
[256]    done       bindkey "$3"

故障现象:zsh终端完全无法正常工作,node -v这类基础命令无法运行,VSCode中打开zsh终端会立即终止退出。

故障原因

从首行报错no such file or directory: /Users/username/.zshrc#可以定位核心问题:粘贴配置时操作失误,在.zshrc中写入了错误的递归source规则,大概率是某行source命令末尾多拼了#字符,甚至直接写成了source .zshrc自身的逻辑。每次加载.zshrc时就会触发无限递归调用,短时间内耗尽系统文件描述符配额,触发too many open files报错,后续所有依赖文件读写、管道通信的命令和插件加载全部失败,最终导致zsh进程崩溃。

修复步骤
  • 第一步:进入不加载zshrc的可用shell环境。由于zsh启动默认加载损坏的配置会直接崩溃,不要直接开默认终端:右键点击终端程序图标,选择「新建命令」,输入/bin/bash后回车,进入bash环境,bash不会读取zsh的配置文件,可以正常执行文件操作命令。
  • 第二步:备份损坏的配置文件,执行命令cp ~/.zshrc ~/.zshrc.broken.bak,避免后续操作失误丢失原有配置。
  • 第三步:编辑.zshrc修复错误配置,执行vim ~/.zshrc打开配置文件,重点排查以下问题:
    1. 定位到报错提示的第26行,删除所有路径末尾带多余#的source命令行
    2. 查找所有目标为~/.zshrc本身的source语句,全部删除——正常的zsh配置不需要自己source自己
    3. 检查新增的ANDROID_SDK_ROOT配置,确保格式正确,没有混入多余的source指令,标准配置参考:
    export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
    export PATH=$PATH:$ANDROID_SDK_ROOT/emulator
    export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools
    
  • 第四步:保存修改退出vim,执行exec zsh重新加载zsh,验证终端是否可以正常启动,基础命令是否能正常运行。
  • 第五步:如果上述操作后仍无法正常启动,可以先清空损坏配置恢复基础zsh功能:执行echo "" > ~/.zshrc重置配置文件,等zsh可以正常进入后,再从之前的备份文件~/.zshrc.broken.bak中逐行恢复原有配置,每恢复几行执行一次source ~/.zshrc验证,定位残留的错误规则。

内容的提问来源于stack exchange,提问作者nuru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 09:45:32