Sublime Text 按Ctrl+B报“command not found: ruby”主因是GUI启动未加载shell配置(如~/.zshrc),导致PATH缺失;需先用import os; print(os.environ.get('PATH'))验证路径,再通过zsh -l -c(macOS/Linux)或硬编码ruby.exe绝对路径(Windows)配置Build System,并手动绑定.rb文件语法。

Sublime Text 跑不了 ruby 不是 Ruby 没装好,而是 GUI 启动时根本没读你的 shell 配置(比如 ~/.zshrc),PATH 为空导致找不到命令——这是 90% 的“按 Ctrl+B 报错”根源。
验证 Sublime 真正看到的 PATH
别猜,直接看它实际用的环境变量:
- 按
Ctrl+`打开 Sublime 控制台 - 输入
import os; print(os.environ.get('PATH')) - 检查输出里有没有 Ruby 所在路径:
macOS Apple Silicon:/opt/homebrew/bin或/Users/xxx/.rbenv/shims
macOS Intel:/usr/local/bin
Windows:C:Ruby32-x64in(注意是反斜杠,且必须在「系统环境变量」中)
如果没出现,后续所有构建配置都白搭——先解决环境可见性问题,再动 Build System。
macOS/Linux 写对 shell_cmd 才能用上 rbenv/rvm
裸写 "shell_cmd": "ruby $file" 在 GUI 下基本必挂;关键是要触发登录态 shell,让它自动加载你的 ~/.zshrc:
- zsh 用户(Catalina+ 默认):
"shell_cmd": "zsh -l -c 'ruby "$file"'"(-l是重点,"$file"防空格路径崩) - bash 用户:
"shell_cmd": "bash -l -c 'ruby "$file"'" - 用 rbenv 且想保持版本灵活:
"shell_cmd": "/Users/xxx/.rbenv/shims/ruby "$file""(~不会被解析,必须写绝对路径) -
file_regex必须配对 Ruby 错误格式,否则双击错误行跳不到位置:"file_regex": "^([^:]*):([0-9]+):([0-9]+):.*$"
Windows 必须硬编码 ruby.exe 绝对路径
Windows 不支持 zsh -l -c 这类机制,只能显式指定可执行文件:
- 构建系统中写:
"cmd": ["C:\Ruby32-x64\bin\ruby.exe", "$file"](反斜杠必须双写,JSON 才能解析) - 路径不能含空格:像
C:Program Files会静默失败;要么重装到无空格路径,要么用robocopy /junction建符号链接绕过 - 确认路径准确:资源管理器里找到
ruby.exe→ 右键属性 → 看「位置」字段,拼上uby.exe最稳 - 务必把 Ruby 安装目录(如
C:Ruby32-x64in)加进「系统环境变量」PATH,不是「用户变量」
.rb 文件打开还是 Plain Text?手动绑定一次就永久生效
这不是插件问题,是 Sublime 默认不把 .rb 当 Ruby 处理:
- 打开任意
.rb文件 → 点右下角语言名(如Plain Text)→ 选Ruby - 点右侧弹出的
Open all with current extension as…→ 确认,之后所有.rb文件都会自动高亮、缩进、匹配括号 - 自定义扩展名(如
.ru、.rake)也要同样操作:View → Syntax → Open all with current extension as… - Sublime Text 4 自带 Ruby 支持,不用额外装旧版
Ruby插件;但.erb文件需手动设为HTML (Rails)语法
真正容易被忽略的是:Build System 不会自动保存当前文件再运行——你改了代码但没按 Ctrl+S,执行的仍是磁盘上的旧版本。这个细节在调试时经常让人多花十分钟反复确认逻辑,其实只是忘了保存。


















