sublime怎么配置shell脚本环境_sublime运行sh脚本【环境】

1次阅读

sublime text 不能原生运行 sh 脚本,需配置构建系统调用 sh 执行;正确写法为 [“sh”, “$file”],避免权限错误和路径问题,并确保语言模式为 shellscript、selector 匹配且重启生效。

sublime怎么配置shell脚本环境_sublime运行sh脚本【环境】

sublime text 能不能直接运行 sh 脚本?

不能原生运行,得靠构建系统(Build System)把 sh 命令接进来。Sublime 本身不带终端执行能力,它只是调用系统 shell 来跑脚本——所以你本地有没有 sh、路径对不对、权限够不够,全影响结果。

怎么配一个靠谱的 ShellScript 构建系统?

别去网上抄一bash -c 套壳的配置,容易出编码或路径空格问题。最稳的是让 Sublime 直接调用 sh 执行当前文件:

  • 菜单栏选 Tools → Build System → New Build System…
  • 清空默认内容,粘贴以下 json(注意 file_pathfile_name 的写法):
{     "cmd": ["sh", "$file"],     "selector": "source.shell",     "file_regex": "^(...*?):([0-9]+):?([0-9]+)?:? (.*)$",     "working_dir": "$file_path" }
  • 保存为 ShellScript.sublime-build(路径默认是 Packages/User/
  • 再打开一个 .sh 文件,右下角手动选中刚建的 ShellScript 构建系统

Permission denied 错误怎么破?

这是最常卡住人的点:Sublime 调用 sh 是“读取并执行”,不是“chmod +x 后执行”。所以即使脚本没可执行权限,sh script.sh 也能跑——但如果你的构建系统里写成 ["./$file"]["$file"],就会报 Permission denied

  • ✅ 正确:用 ["sh", "$file"] —— 显式指定解释器,绕过权限检查
  • ❌ 错误:用 ["$file"] —— 等价于 ./script.sh,依赖文件 x 权限
  • ⚠️ 注意:$file 包含完整路径,如果路径含空格,Sublime 会自动加引号;但老版本(如 Sublime Text 3 build 3143 之前)可能不处理,建议升级或避免空格路径

为什么改了构建系统却没反应?

常见静默失效原因就三个:

  • 构建系统没被当前文件“认领”:检查右下角语言模式是不是 ShellScript(不是 BashPlain text),且 selector 值匹配
  • 保存了但没生效:Sublime 不自动重载 .sublime-build 文件,改完要重启 Sublime 或用 Preferences → Browse Packages… 手动删掉缓存再重开
  • 输出一闪而过:脚本执行完就退出,看不到结果。临时加一句 read -p "Press enter to continue..." 在末尾,或者改用 "cmd": ["sh", "-c", "sh '$file'; read -p 'Done. Press enter...'"]

真正麻烦的不是配构建系统,而是你写的 sh 脚本本身依赖交互式环境变量、当前终端的 PATH,或用了 Bash 特有语法却用 sh 跑——这些 Sublime 都不会帮你兜底。

text=ZqhQzanResources