Windows下Sublime Text配bash "$file"必然失败,因系统原生无bash命令,PATH未配置时必报“command not found”;且cmd/PowerShell不识别#!/bin/bash及Bash语法,Sublime仅拼接字符串调用系统命令,不自动查找解释器或处理路径反斜杠与空格。

Windows 下 Sublime Text 无法直接运行 .sh 脚本,必须显式调用 Git Bash(或 WSL)的可执行文件;配 bash "$file" 必然失败,100% 报 bash: command not found 或静默无输出。
为什么 shell_cmd 写 bash "$file" 在 Windows 下一定不工作
Windows 原生没有 bash 命令,cmd.exe 和 powershell.exe 都不识别 #!/bin/bash,也不支持 [[ ]]、source、数组等语法。Sublime 的构建系统只是拼接字符串后丢给系统执行,它不会自动找解释器、也不会降级兼容。
- 在 CMD 中运行
bash --version报“不是内部或外部命令” → 说明 Git Bash 没装,或路径没进PATH - 网上常见配置
"shell_cmd": "bash \"$file\""在 Windows 下完全无效:既找不到bash,又无法处理路径中的反斜杠和空格 - 即使你装了 WSL,Sublime 运行在 Windows 用户态,
/home/xxx路径对它不可见;直接写wsl -e bash -c "cd /home/xxx && ./a.sh"会因路径映射失败而报错
正确配置 Git Bash 构建系统(推荐)
Git for Windows 自带 git-bash.exe,路径稳定、启动快、路径转换兼容性好,是 Windows 下最稳妥的选择。
- 先确认
git-bash.exe实际位置:常见为C:/Program Files/Git/git-bash.exe或C:/Users/XXX/AppData/Local/Programs/Git/git-bash.exe(注意用正斜杠或双反斜杠) - 菜单栏 →
Tools → Build System → New Build System…,粘贴以下内容并保存为ShellScript.sublime-build:
{
"shell_cmd": "C:/Program Files/Git/git-bash.exe --cd=\"$file_path\" -c \"bash '$file_name'\"",
"selector": "source.shell",
"working_dir": "$file_path",
"encoding": "utf-8"
}
-
--cd=\"$file_path\"让 Git Bash 启动时自动切换到脚本所在目录,避免./lib.sh: No such file -
-c \"bash '$file_name'\"在当前目录下执行脚本,不依赖chmod +x权限 -
"selector": "source.shell"是硬性要求:写成source.bash或留空,Ctrl+B就不触发
语法高亮与文件绑定必须手动设为 source.shell
Sublime 不会根据 #!/usr/bin/env bash 自动识别语言类型,右下角显示 “Plain Text” 或 “Bash” 都可能匹配失败。
- 打开
.sh文件 → 点击右下角语言名 → 选Shell-Unix-Generic(Sublime 自带,稳定)或Bash(需安装ShellScriptImproved插件) - 装插件:按
Ctrl+Shift+P→ 输入Package Control: Install Package→ 搜Bash(作者 wbond),别装Bash-IDE - 重启 Sublime 后,再点右下角语言名 → 选
Bash,然后View → Syntax → Open all with current extension as… → Bash,让所有.sh文件永久绑定 - 注意:
selector字段仍必须写"source.shell",因为这是 Sublime 自带语法包定义的作用域名;插件不会改它
容易被忽略的关键细节
构建系统生效的前提是:文件已保存(未保存的缓冲区导致 $file 为空)、右下角语言类型匹配 source.shell、且构建项已在 Build: Select Build System 中被选中。很多人卡在“没反应”,其实只是忘了点右下角手动切语言,或者保存前就按了 Ctrl+B。


















