Sublime高效编写与调试Shell脚本教程

轻墨酱_7721

轻墨酱_7721

2026-06-28

782人浏览

原创

sublime本身不运行shell脚本,仅调用系统bash执行;需三步核心配置:语法设为bash(装wbond版插件并绑定.sh)、构建命令设为"bash -x \"$file\""、缩进锁死为tabs(禁用detect_indentation),否则高亮错乱、permission denied或静默失败。

sublime高效编写与调试shell脚本教程

Sublime 本身不运行 Shell 脚本,它只调用系统 bash 执行文件;所谓“高效编写与调试”,核心就三件事:语法必须设为 Bash、构建命令必须写成 bash -x "$file"、缩进必须锁死为 Tabs。其余配置都是噪音。

为什么 .sh 文件打开还是 Plain Text?必须手动设成 Bash 语法

Sublime 不解析 #!/usr/bin/env bash,只看文件后缀和当前语法设置。右下角显示 “Plain Text” 或 “Shell Script” 都不行,必须是 “Bash” 才能正确高亮 [[ ]]、${arr[@]}、进程替换等现代 Bash 特性。

  • 按 Ctrl+Shift+P(macOS 是 Cmd+Shift+P),输入 Package Control: Install Package,搜索并安装 Bash(作者 wbond,不是 Bash-IDE)
  • 重启 Sublime,打开任意 .sh 文件,点击右下角语言名 → 选 Bash
  • 再点 View → Syntax → Open all with current extension as… → Bash,这样所有 .sh 文件就永久绑定
  • 如果想用 Settings – Syntax Specific 永久生效,右侧加:
    {"extensions": ["sh"], "syntax": "Packages/Bash/Bash.sublime-syntax"}

Ctrl+B 报 Permission denied?别 chmod +x,改构建命令

报错不是脚本写错了,是 Sublime 默认尝试执行 ./script.sh,而 Unix 权限机制直接拦截。硬加 x 位反而掩盖问题,且不符合运维分发习惯(多数脚本靠 bash script.sh 调用)。

Sublime Text Build Linux版
Sublime Text Build Linux版

Sublime Text Linux x86-64 deb 安装包。官方也提供 rpm、tar.xz 和软件源安装方式。

下载
  • 菜单 Tools → Build System → New Build System…
  • 粘贴保存为 Bash.sublime-build(自动落在 Packages/User/):
    {"shell_cmd":"bash -x \"$file\"", "file_regex":"^([^:]+):([0-9]+):?([0-9]+)?:? (.*)$", "working_dir":"$file_path", "selector":"source.shell"}
  • "shell_cmd":"bash -x \"$file\"" 是关键:显式调用解释器,绕过权限检查;-x 开启调试模式,每步都打印,比静默失败好十倍
  • 保存文件后再按 Ctrl+B —— 未保存的缓冲区里 $file 是空字符串,构建必失败

Tab 缩进被转成空格?Shell 脚本里制表符不是可选项

Shell 对缩进本身不敏感,但对 if/then 的换行和分号位置极其敏感。Sublime 默认把 Tab 转成 4 个空格,表面整齐,实际可能掩盖 then 缺失换行或分号导致的语法错误。

  • 先执行 View → Indentation → Convert Indentation to Tabs,把已有空格转回 Tab
  • 再进 Preferences → Settings – Syntax Specific,右侧加:
    {"detect_indentation": false, "tab_size": 4}
  • 状态栏应显示 Tabs: 4,不是 Spaces: 4
  • 别信“自动检测”:Sublime 对 Shell 的缩进检测经常误判,尤其混用空格和 Tab 时,if 报错但光标停在奇怪位置,八成是缩进类型不一致

输出一闪而过或看不到错误?重定向或加 read 是刚需

Sublime 构建面板默认不保留终端状态,尤其脚本末尾没 read 或没触发错误时,输出直接消失。这不是构建失败,是面板关太快。

  • 在构建命令末尾加 && read -p "Press Enter to exit"(Linux/macOS),让终端停留
  • 更稳妥的做法是重定向:bash -x "$file" > /tmp/sublime-run.log 2>&1,再手动查日志
  • 避免用 gnome-terminal -- bash -c "" 类方案:它新开窗口,和构建面板脱节,无法捕获 $? 或标准错误流
  • 如果脚本要交互(比如 read name),默认 build 不支持 stdin 输入,得换 Terminus 插件或改用终端手动跑

真正卡住人的从来不是语法,而是 $file_path 没设对导致相对路径失效、detect_indentation 没关掉导致缩进类型混乱、或者忘了 Ctrl+S 就按 Ctrl+B —— 这些细节不处理,再全的插件也救不了。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

2026.10.22

0

15

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

2026.10.22

0

12

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

2026.10.22

0

16

剧云故事大纲与分场规划教程
剧云故事大纲与分场规划教程

本专题讲解剧云梗概与多级大纲功能,覆盖全局、分集、分场结构生成,以及主线冲突、剧情节点和场次顺序调整。

2026.10.22

0

15

VibeKnow PPT讲解视频教程汇总
VibeKnow PPT讲解视频教程汇总

本专题介绍VibeKnow PPT讲解模式的素材准备、旁白生成、页面节奏、画面呈现与导出设置,适合课程和培训场景。

2026.10.22

0

16

VibeKnow PDF转视频教程合集
VibeKnow PDF转视频教程合集

本专题围绕VibeKnow的PDF转视频功能,讲解文件准备、内容解析、脚本生成、重点可视化及配音字幕检查方法。

2026.10.22

0

12

二狗PPT模板与视觉设计
二狗PPT模板与视觉设计

本专题介绍二狗PPT的职场模板、主题风格与页面版式,覆盖模板切换、色彩选择、内容匹配和正式汇报场景下的视觉优化方法。

2026.10.22

0

13

php漏洞修复方法
php漏洞修复方法

PHP漏洞聚合专题,持续整理PHP最新高危漏洞、CVE安全预警、受影响版本、自查命令及修复方案,覆盖PHP-FPM、Docker、Ubuntu与Linux服务器环境,帮助开发者快速完成漏洞排查、版本升级和安全加固。

2026.10.22

20

31

二狗PPT入门与基础操作
二狗PPT入门与基础操作

本专题整理二狗PPT从官网进入、输入主题、生成大纲到制作成稿的基础操作,帮助新手掌握AI一键生成职场PPT的完整流程。

2026.10.22

0

14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程