sublime text ctrl+b无反应或报“no build system”是因为未配置构建系统,需手动创建shell.sublime-build文件并确保文件已保存、语法设为bash、构建系统手动选中。

Sublime Text 本身不运行 Shell 脚本,它只调用系统 shell 执行文件;能跑起来的关键不是“配对了语法高亮”,而是 build 系统是否正确传参、权限是否到位、工作目录是否匹配脚本依赖。
为什么 Ctrl+B 没反应或报 “No build system”
这不是脚本写错了,是 Sublime 根本没绑定构建规则。它不会因为文件有 #!/bin/bash 就自动启用某个 build —— shebang 完全被忽略。
- 右下角状态栏必须显示 ShellScript 或 Bash(推荐装
Bash插件并手动绑定.sh后缀) - 菜单栏 →
Tools → Build System → New Build System…,粘贴后保存为Shell.sublime-build,路径自动落在Packages/User/ - 保存文件后再按
Ctrl+B:未保存的临时缓冲区里$file是空字符串,shell_cmd会执行失败 - 按
Ctrl+Shift+P输入Build: Select Build System,确认当前选中的是你刚建的那个,不是Automatic
Permission denied 错误怎么绕过或修复
报这个错,90% 是脚本没加执行权限,不是 build 配置问题。Sublime 的构建系统本质是调 system(),Unix 权限检查绕不过。
- 终端里跑
ls -l script.sh,确认权限含x(如-rwxr-xr-x) - 快速修复:
chmod +x script.sh - 更稳做法:build 里别用
./$file,改用bash "$file"或sh "$file"—— 这样只依赖读权限,完全跳过x位检查 - 别信“我写了
#!/usr/bin/env bash就该能跑”,Sublime 不解析 shebang,只认 build 配置里的shell_cmd
输出一闪而过或看不到错误信息
Sublime 构建面板默认不保留终端状态,尤其脚本末尾没 read 或没触发错误时,输出直接消失。
- 在 build 的
shell_cmd末尾加&& read -p "Press Enter to exit"(Linux/macOS),让终端停留 - 或者重定向输出:
bash "$file" > /tmp/sublime-run.log 2>&1,再手动查日志 - 避免用
gnome-terminal -- bash -c "..."类方案:它新开窗口,和构建面板脱节,无法捕获$?或标准错误流 - 如果脚本要交互(比如
read name),默认 build 不支持 stdin 输入,得换Terminus插件或改用终端手动跑
working_dir 和路径变量怎么写才不崩
脚本里用了 ./config.json 或 source ./lib.sh 却找不到文件?大概率是 working_dir 没设对,导致相对路径失效。
- 必须设
"working_dir": "$file_path",不是"$file"或留空 —— 后者会让脚本在 Sublime 安装目录下执行 -
$file_path是目录路径,结尾不带/;$file_name是纯文件名,不含路径 - 路径含空格?
shell_cmd里所有变量都必须用双引号包裹,如"bash \"$file\"",否则 shell 解析会断开 - Windows 用户别硬配原生 cmd:shebang 无效,
#!/bin/bash在 cmd 下直接报错;WSL 用户请用bash -c "cd '$file_path' && '$file'"方式
最常被忽略的一点:build 系统生效的前提,是文件已保存、语法已手动设为 Bash/ShellScript、构建系统已手动选中 —— 三者缺一不可。Sublime 不做任何猜测,它只执行你明确告诉它的那条命令。











