macos sonoma 更新后 ruby 命令失效主因是 path 被重置或 shell 配置错配;需确认 shell 类型(zsh 对应 ~/.zshrc)、ruby 实际路径,再将 homebrew 或 rbenv 的 bin 目录正确加入 path 并补全 gems bin 路径,最后清理旧配置避免冲突。
系统补丁(尤其是 macos sonoma 及后续版本的更新)常会重置 shell 配置、覆盖 path、锁定 /usr/local 权限,导致 ruby、gem、pod 等命令报 zsh: command not found 或路径错误。核心不是 ruby 被删了,而是终端找不到它——修复重点在环境变量与执行路径的重新对齐。
确认当前 Ruby 实际位置和 Shell 类型
先别急着改配置,先看清现状:
- 运行
echo $SHELL—— 若输出/bin/zsh,说明你用的是 zsh,配置文件应为~/.zshrc(不是.bash_profile) - 运行
which ruby—— 若返回/usr/bin/ruby,说明你仍在调用系统 Ruby;若返回空或报错,说明 Homebrew 或 rbenv 安装的 Ruby 没被识别 - 运行
ruby -v && gem env home—— 两者路径应一致且指向用户可写目录(如~/.rbenv/versions/3.2.2或/opt/homebrew/opt/ruby),否则就是环境未激活
修复 PATH:把 Ruby 可执行目录加进 zshrc
Homebrew 安装的 Ruby(推荐方式)默认路径因芯片而异:
- Apple Silicon(M1/M2/M3):
/opt/homebrew/opt/ruby/bin - Intel Mac:
/usr/local/opt/ruby/bin
执行以下命令(选对应路径):
echo 'export PATH="/opt/homebrew/opt/ruby/bin:$PATH"' >> ~/.zshrc source ~/.zshrc
再验证:which ruby 应输出新路径,ruby -v 显示 3.2.x 或更高版本。
利用 macOS 原生能力实现本地语音识别与合成。通过 yap (Apple Speech.framework) 进行语音转文字,通过 say + ffmpeg 进行文字转语音。完全离线,无需 API 密钥。具备音质检测与智能选声功能。
补全 Gem 的 bin 目录(避免 rails/pod 找不到)
仅加 Ruby 主路径还不够——gem 安装的命令(如 rails、pod)默认放在 ~/.gem/ruby/X.X.0/bin 或 Homebrew Ruby 的 gems bin 目录下。需额外添加:
- 对 Homebrew Ruby:运行
echo 'export PATH="/opt/homebrew/lib/ruby/gems/3.2.0/bin:$PATH"' >> ~/.zshrc(版本号请用ruby -v实际输出替换) - 对 rbenv 用户:确保已执行
rbenv init - zsh并重启终端,shims 会自动接管所有命令
完成后再次 source ~/.zshrc,然后测试 pod --version 或 rails -v 是否可用。
检查并清理残留的旧配置
系统更新后,~/.bash_profile 里的旧 PATH 可能还在,但 zsh 不读它;更麻烦的是,它可能被误加载(比如某些 IDE 启动终端时绕过 shell 初始化)。建议:
- 临时重命名旧文件:
mv ~/.bash_profile ~/.bash_profile.backup - 检查
~/.zprofile是否有重复 PATH 添加(尤其含/usr/local/bin但没带 Ruby 子路径) - 运行
echo $PATH,确认输出中同时包含 Ruby 的 bin 和 gems 的 bin,且没有冲突路径(如多个/usr/local/bin堆叠)










