Sublime Text 不能原生运行 shell 脚本,但可通过自定义 Build System 调用系统 bash 执行;需配置 Bash.sublime-build 文件,设置 shell_cmd、selector 为 source.shell,并确保文件语法高亮为 ShellScript、构建系统已选中,脚本还需有执行权限。

Sublime Text 能不能直接运行 shell 脚本
不能原生运行,但可以通过 Build System 机制调用系统 bash 执行,本质是让 Sublime 启动一个终端进程并传入当前文件路径。它不提供交互式 shell(比如不能输入 read -p 后手动键入),也不支持后台作业或终端复用。
怎么创建 Bash 构建系统(macOS / Linux)
打开 Tools → Build System → New Build System…,粘贴以下内容并保存为 Bash.sublime-build:
{
"shell_cmd": "bash \"${file}\"",
"file_regex": "^(...*?):([0-9]+):?([0-9]+)?:? (.*)$",
"selector": "source.shell",
"variants": [
{
"name": "Run in Terminal",
"shell_cmd": "gnome-terminal -- bash -c \"bash '${file}' ; read -p 'Press Enter to exit...'\""
}
]
}
注意:第二版(Run in Terminal)仅适用于 GNOME 桌面(Linux)。macOS 需换用 osascript,Windows 需用 cmd.exe 或 PowerShell —— 不要强行复用这个配置。
-
${file}是当前打开的文件绝对路径,必须加双引号防空格路径出错 -
selector设为source.shell后,只要语法高亮是 ShellScript,快捷键Ctrl+B就自动触发该构建系统 - 如果脚本需要交互(如
read),必须用带终端的 variant,否则命令会立即退出、看不到输出
为什么 Ctrl+B 运行没反应或报 “No build system”
常见原因不是配置错了,而是没激活构建系统或文件类型不匹配:
- 确认右下角状态栏显示
ShellScript(不是Plain Text),点击切换 →View → Syntax → ShellScript → Bash - 检查
Tools → Build System是否选中了你刚创建的Bash(不是Automatic,因为Automatic只识别.sh后缀且需 shebang 行,如#!/bin/bash) - Windows 用户若用 WSL,
shell_cmd应改为:wsl bash \"${file}\",且确保${file}是 WSL 可访问路径(如/home/user/script.sh,而非C:\...)
如何让 .sh 文件默认用 Bash 构建系统
在 Bash.sublime-build 中添加 target 和 working_dir 字段可提升稳定性:
{
"shell_cmd": "bash \"${file}\"",
"working_dir": "${file_path}",
"target": "exec",
"selector": "source.shell"
}
关键点:
-
working_dir确保脚本内相对路径(如./lib/utils.sh)能正确解析 -
target: "exec"是 Sublime 内置执行器,比自定义 Python 插件更轻量、兼容性更好 - 不要试图在
shell_cmd里写cd ${file_path} && bash ${file_name}——${file_name}不含路径,且&&在 JSON 字符串里需转义,极易出错
真正容易被忽略的是 shebang 行和文件权限:即使构建系统配对了,bash script.sh 仍可能因缺少 x 权限失败,尤其从 Git 拉取的脚本。运行前先 chmod +x script.sh。










