Ctrl+B没反应需先确认语法识别和构建系统是否生效:右下角语法须设为Shell-Unix-Generic或Bash,Tools→Build System中手动选中对应构建项;新建.sublime-build文件需重启或清缓存才生效。

Ctrl+B没反应?先确认语法识别和构建系统是否真正生效
Sublime Text 不会因为文件有 #!/bin/bash 就自动启用 Shell 构建,它只看两个东西:右下角显示的语法类型(必须是 Shell-Unix-Generic 或插件提供的 Bash),以及当前选中的构建系统是否匹配 selector 字段。
- 右下角点击语言名 → 手动选
Shell-Unix-Generic(自带,稳定)或Bash(需装 wbond 的 Bash 插件) - 菜单栏 →
Tools → Build System→ 确认已手动选中你配置的构建项,不是Automatic - 新建的
.sublime-build文件保存后,Sublime 不会热重载;改完要重启,或删掉Packages/User/.cache/下缓存
Windows 下运行失败?别硬配 bash "$file",用 Git Bash 路径
Windows 原生没有 /bin/bash,写 "shell_cmd": "bash \"$file\"" 必报 bash: command not found 或静默失败。Git Bash 是最轻量、路径兼容性最好的方案。
- 先装 Git for Windows(勾选 “Add to PATH”),终端里运行
git-bash --version验证 - 查
git-bash.exe实际路径,常见为C:/Program Files/Git/git-bash.exe(注意用正斜杠或双反斜杠) - 构建系统里写:
"shell_cmd": "C:/Program Files/Git/git-bash.exe --cd=\"$file_path\" -c \"bash '$file_name'\"" - 别用
cmd或powershell替代——它们不支持[[ ]]、source、数组等 Bash 语法,测试通过 ≠ 真实可用
Permission denied 不是配置错,是权限或调用方式问题
报这个错,90% 和构建配置无关,而是脚本没执行权限,或者构建命令错误地依赖了 x 位。
- 终端里跑
ls -l script.sh,确认权限含x(如-rwxr-xr-x);快速修复:chmod +x script.sh - 更稳做法:构建里别用
./$file,改用["bash", "$file"]或"shell_cmd": "bash \"$file\""—— 这样只依赖读权限,跳过x检查 - WSL 下还要注意路径映射:
$file是 Windows 路径(C:\work\test.sh),得转成/mnt/c/work/test.sh,否则wsl bash找不到文件
输出一闪而过?别靠新开终端,加 read 或重定向
Sublime 构建面板默认不保留终端状态,尤其脚本末尾没交互时,输出直接消失。新开 gnome-terminal 或 osascript 会脱离构建上下文,无法捕获 $? 或标准错误。
- 在脚本末尾加
read -p "Press Enter to exit"最简单有效 - 或改构建命令:
"shell_cmd": "bash \"$file\" > /tmp/sublime-run.log 2>&1 && read -p \"Log written. Press Enter...\"" - 调试阶段建议加
-x:"shell_cmd": "bash -x \"$file\"",能看到每步执行过程;不加它,出错时只报exit code 1,毫无意义
最容易被忽略的是:构建系统里的 selector 必须写成 "source.shell",不是 source.bash 或 source.sh;插件再新,作用域也还是 Sublime 内部定义的 source.shell。写错就完全不触发,连报错都不会有。


















