Sublime插件不继承系统PATH,需手动配置executable路径或通过Build System/EnvFile注入环境变量;SublimeLinter等必须在设置中指定绝对路径,EnvFile仅对Build生效,项目变量须写入.sublime-project的env字段。

插件本身不读系统 PATH,得靠 Build System 或 EnvFile 注入
Sublime Text 的插件(比如 SublimeLinter-php、PHP Companion)运行时默认**不继承系统环境变量**。你改了 PATH 让 php 或 python 在终端能跑,不代表插件就能调用它们——尤其在 Windows 上,插件常因找不到可执行文件报 command not found 或静默失败。
真正起作用的是两套机制:
-
Build System:定义"cmd"数组时显式写死路径(如["C:\php\php.exe", "$file"]),或依赖当前 shell 环境(需设"shell": true) -
EnvFile插件:只影响 Build System 执行时的环境变量,对语法检查类插件(如 SublimeLinter)**无效**——它不走 Build 流程
SublimeLinter 类插件找不到 linter 二进制?直接配 executable
像 SublimeLinter-php、SublimeLinter-eslint 这类插件,不会查 PATH,而是读自己的设置项。必须手动指定可执行文件位置。
操作步骤:
- 打开
Preferences → Package Settings → SublimeLinter → Settings - 在右侧用户设置中添加对应字段,例如:
{
"linters": {
"php": {
"executable": ["C:\php\php.exe"]
},
"eslint": {
"executable": ["C:\Users\me\AppData\Roaming\npm\eslint.cmd"]
}
}
}
注意:executable 值必须是数组,Windows 下优先用 .cmd 或 .bat 包装器;macOS/Linux 要确保有执行权限(chmod +x)。
项目级环境变量要用 .sublime-project 的 env 字段
如果某个插件(如自定义 Build System 或 ShellCommand 插件)需要读取 API_KEY、NODE_ENV 这类变量,不能靠 .env 文件自动生效——得写进项目配置。
编辑你的 myproject.sublime-project 文件,在 "settings" 同级加 "env":
{
"folders": [{ "path": "." }],
"settings": { "tab_size": 2 },
"env": {
"NODE_ENV": "development",
"PYTHONPATH": "$project_path/src"
}
}
这个 env 会注入到所有通过该 Build System 启动的进程里,但对非 Build 场景(比如右键菜单命令)无效。
EnvFile 插件只对 Build System 生效,且不支持嵌套 .env 文件
很多人以为装了 EnvFile 就万事大吉,结果发现 subl . 启动后,插件还是读不到 DB_URL。这是因为:
-
EnvFile只在触发Build(Ctrl+B)时解析.env*并注入环境变量 - 它不修改 Sublime 主进程的环境,所以
SublimeLinter、SideBarEnhancements等插件依然看不到这些变量 - 不支持
.env.local覆盖.env这种 dotenv 标准行为,只按固定顺序加载:.env.development→.env
真要让插件读到变量,要么改插件源码(不推荐),要么把关键路径/参数写死在插件设置里——这是最稳的做法。











