是默认行为,Sublime GUI启动不加载shell配置文件(如~/.zshrc),只继承系统级环境变量;验证方式为控制台执行import os; print(os.environ.get('JAVA_HOME'))对比终端echo $JAVA_HOME。

Sublime 启动时拿不到终端里的环境变量?这是默认行为
Sublime Text 图形界面双击启动时,不加载 ~/.zshrc(macOS)、~/.bashrc(Linux)或 Windows 的用户级 PATH 变量。它只继承系统级或会话级环境变量,而你手动在 shell 里 export 的变量、source 过的配置,对 Sublime 是不可见的。这不是 bug,是 GUI 应用的通用限制。
验证方法:在 Sublime 里按 Ctrl+` 打开控制台,输入:
import os; print(os.environ.get('JAVA_HOME'))
如果输出 None,但你在终端里 echo $JAVA_HOME 能看到值,就确认了这个问题。
Windows 下让 Sublime 继承完整 PATH:必须重启全部 subl.exe 进程
改完系统环境变量后,旧的 Sublime 进程仍用着启动时缓存的老 PATH。光关窗口没用,得彻底杀掉进程:
- 任务管理器 → 搜索
subl.exe或sublime_text.exe,全部结束任务 - 或者命令行执行:
taskkill /f /im subl.exe和taskkill /f /im sublime_text.exe - 再从开始菜单或桌面快捷方式重新打开 Sublime
特别注意:如果用了 Windows Terminal 或 WSL,它们的子 shell 不会自动把新 PATH 透传给 Sublime;此时推荐用 subl . 从终端启动,路径才一定可靠。
macOS/Linux:别只改 /etc/environment,必须绑定 shell 初始化文件
图形界面启动 Sublime 时读不到 /etc/environment,也不会执行你的 ~/.zshrc。解决办法是把环境变量“硬塞”进 Sublime 启动流程:
- macOS Catalina 及之后(默认 zsh):编辑
~/.zshrc,加一行:alias subl='PATH="/usr/local/bin:$PATH" /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl -n -w' - 然后运行
source ~/.zshrc,再用subl .启动 —— 这样 PATH 就带着你定义的路径进去了 - Linux(bash/zsh)同理,但注意检查
subl是否指向正确路径:ls -l /usr/local/bin/subl,软链接失效常因Sublime Text.app名称含空格或版本号(如Sublime Text 4.app)
项目级环境变量:用 EnvFile 插件加载 .env 文件
全局 PATH 解决不了不同项目要不同 NODE_ENV、DATABASE_URL 的需求。这时靠插件更干净:
- 用
Ctrl+Shift+P→Install Package→ 搜EnvFile安装 - 在项目根目录放
.env(开发)和.env.production(生产),内容如:DATABASE_URL=sqlite:///dev.db - EnvFile 默认自动加载
.env;若需切换环境,在 Sublime 状态栏右下角点击环境名,选对应文件即可 - 配合自定义 Build System 使用时,
shell_cmd会自动注入这些变量,无需改代码或脚本
EnvFile 不修改系统 PATH,也不影响其他应用,只作用于当前 Sublime 项目窗口 —— 这是隔离开发配置最轻量也最不容易出错的方式。

















