Terminal插件默认工作目录是当前文件路径(${file_path}),非项目根目录;未打开文件时回退至用户主目录,需手动配置${project_path:${folder}}或修改shell启动脚本避免覆盖。

Terminal 插件打开的终端工作目录为什么不是项目根目录
Terminal 插件默认把工作目录设为当前文件所在路径($file_path),不是你打开 Sublime 时的项目根目录,也不是 Sublime 窗口的“打开文件夹”路径。它只认编辑器里**当前激活标签页**对应的文件位置。
如果你没打开任何文件,只打开了一个空窗口或文件夹视图,$file_path 为空,插件会 fallback 到用户主目录(如 /home/username 或 C:UsersAlice)——这容易让人误以为“路径错了”。
- 想强制用项目根目录?得手动改 Terminal 插件配置:打开
Preferences → Package Settings → Terminal → Settings – User,加一行"default_directory": "${project_path:${folder}}" - 但注意:这个变量在 Sublime 没加载项目(即没通过
subl .打开文件夹)时仍可能为空,最终还是会落到主目录 - 更稳的办法是先用
subl .打开整个文件夹,再切换到任意文件,此时$file_path才有可靠上下文
Terminus 配置 working_dir 后仍然 cd 不到目标路径
Terminus 的 working_dir 是启动时的初始路径,但它不自动执行 cd 命令;如果终端 shell 启动脚本(比如 .zshrc 或 PowerShell profile)里有 cd、pushd 或修改 PWD 的逻辑,就会覆盖掉 Terminus 设定的路径。
常见表现:配置了 "working_dir": "${project_path}",但终端一打开就跳到家目录或 Git 工作区上层。
- 先确认
${project_path}是否有效:在 Sublime 里按Ctrl+Shift+P输入Terminus: Open Default Shell in Panel,看右下角状态栏是否显示路径 - Mac/Linux 用户检查
~/.zshrc或~/.bash_profile,删掉或注释掉类似cd ~、cd $(git rev-parse --show-toplevel 2>/dev/null || echo ~)这类自动跳转逻辑 - Windows 用户检查 PowerShell 的
$PROFILE,避免Set-Location或cd指向固定路径 - 实在不行,直接在 Terminus 设置里写死路径,比如
"working_dir": "/Users/Alice/my-project"(macOS/Linux)或"working_dir": "C:/Users/Alice/my-project"(Windows)
Build System 里调用终端命令失败,提示 Unable to find command
这不是 Terminal 或 Terminus 的问题,而是 Build System 的 cmd 字段里写了 shell 内置命令(如 cd、source、export),而 Sublime 的构建系统不经过 shell 解析,只调用可执行文件。
例如写 "cmd": ["cd mydir && python3 main.py"] 必然失败——cd 不是独立程序,&& 是 shell 语法,Sublime 根本不认识。
- 正确做法是用
shell_cmd替代cmd(仅限 Sublime Text 4),它会交给系统 shell 执行:"shell_cmd": "cd mydir && python3 main.py" - 如果用的是 ST3 或需兼容性,只能靠外部脚本中转:写个
run.sh(macOS/Linux)或run.bat(Windows),在 Build System 里调用它 - 注意
shell_cmd不支持$file这类 Sublime 变量,得用$file_path+ 字符串拼接,比如"shell_cmd": "cd '$file_path' && python3 main.py"
Terminal 插件在 Windows 上唤起 cmd.exe 却找不到 python 命令
这是环境变量隔离导致的:Terminal 插件调用的是干净的 cmd.exe 实例,不继承 Sublime 进程的环境变量(尤其是 PATH),所以即使你在 PowerShell 里能运行 python,Terminal 弹出的窗口里也可能报 'python' is not recognized。
根本原因不是 Python 没装,而是终端启动时 PATH 没包含 Python 安装目录。
- 最简单解法:不用 cmd.exe,改用 PowerShell——在 Terminal 设置里把
"terminal": "powershell"(Windows) - 或者,在 Terminal 的
parameters里显式扩展 PATH:"parameters": { "env": { "PATH": "C:\Python312;C:\Python312\Scripts;%PATH%" } }(路径按你实际安装位置替换) - 别依赖
where python输出来反推——它查的是当前 shell 的 PATH,而 Terminal 新启的 cmd 并不共享这个 PATH - 验证方式:在 Terminal 弹出的窗口里直接输
echo %PATH%,看输出里有没有 Python 路径


















