sublime按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文件正确绑定ruby语法。

Sublime Text 按 Ctrl+B 报 command not found: ruby,不是 Ruby 没装好,而是 Sublime GUI 启动时压根没加载你的 shell 环境变量(比如 ~/.zshrc),导致它根本找不到 ruby 命令——PATH 缺失是唯一根源。
怎么验证 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(注意是反斜杠,且必须在「系统变量」PATH 中)
如果没出现,就说明 Sublime 确实看不见 ruby,接下来才需要配构建系统。
macOS/Linux 怎么让 Sublime 正确调用 rbenv/rvm 管理的 Ruby
写死路径会锁死版本;裸写 "shell_cmd": "ruby $file" 又依赖残缺 PATH。最稳的是让 Sublime 启动一个登录态 shell,自动加载你的 ~/.zshrc:
{
"shell_cmd": "zsh -l -c "ruby '$file'"",
"file_regex": "^(*?):([0-9]*):?([0-9]*)",
"selector": "source.ruby",
"encoding": "utf-8"
}
注意三点:
-
zsh -l -c中的-l表示登录态,会source ~/.zshrc;macOS Catalina+ 默认是 zsh,别写成bash - 双引号和单引号嵌套必须严格匹配,否则含空格路径会崩
-
file_regex必须加,不然错误行号点不了,定位不到哪行出错
Windows 下必须显式指定 ruby.exe 绝对路径
Windows 不支持 zsh -l -c 这类 shell 加载方式,只能硬编码可执行文件路径:
{
"cmd": ["C:\Ruby32-x64\bin\ruby.exe", "$file"],
"file_regex": "^(*?):([0-9]*):?([0-9]*)",
"selector": "source.ruby"
}
关键细节:
- 路径中的反斜杠必须双写(
\),否则 JSON 解析失败 - 路径不能含空格;如果安装在
C:Program Files下,要么重装到无空格路径,要么改用robocopy符号链接绕过 - 务必确认该路径下确实存在
ruby.exe,右键属性里看「位置」字段最准
.rb 文件打开后还是 Plain Text?不是插件问题
这是 Sublime 根本没把文件当 Ruby 处理。它默认只对 .rb 扩展名做绑定,但首次打开可能仍显示为 Plain Text:
- 打开任意
.rb文件 → 点右下角语言名(如Plain Text)→ 选Ruby - 再点右侧出现的
Open all with current extension as…,这样所有.rb文件下次都会自动用 Ruby 语法 - 别去改
Preferences → Settings – Syntax Specific,那只是临时覆盖,不解决文件关联
如果你用的是非标准扩展名(比如 .ru 或 .rake),得单独进 View → Syntax → Open all with current extension as… 绑定一次。











