Sublime怎么配置Shell脚本_Sublime Bash高亮教程【运维】

7次阅读

sublime中.sh文件无高亮是因未识别为shell类型;需手动设置右下角语言为bash,或用命令面板执行set syntax: shell script永久绑定;非.sh文件需通过open all with current extension as…绑定。

Sublime怎么配置Shell脚本_Sublime Bash高亮教程【运维】

Shell 文件没高亮?检查文件关联是否正确

Sublime 默认不会把 .sh 文件当成 Shell 脚本处理,常见现象是写完 #!/bin/bash 后整段灰扑扑、没有语法高亮、关键词也不变色。根本原因不是插件没装,而是当前文件没被识别为 Shell 类型。

  • 手动设置:打开文件后,点右下角语言名(比如显示 “Plain Text”),在弹出菜单里选 Shell ScriptBash
  • 永久绑定:用 Ctrl+Shift+P(Win/linux)或 Cmd+Shift+Pmacos)调出命令面板,输入 Set Syntax: Shell Script,回车确认;之后再保存为 .sh 后缀,Sublime 通常会记住该关联
  • 注意:如果文件名不含 .sh(比如叫 deployDockerfile),得靠 View → Syntax → Open all with current extension as… 手动绑定扩展名

用 Package Control 装 Bash 插件前先确认需求

Sublime 自带的 Shell Script 语法已覆盖大部分 Bash 场景,但对 [[ ]]、数组展开、进程替换($()等现代 Bash 特性支持弱,容易误判为错误或不着色。这时候才需要第三方增强。

  • 推荐装 ShellScript(作者 wbond):比默认语法更准,支持 bash -n 静态检查提示,且不破坏原有快捷键
  • 别装 Shell-promptBash-ide:前者专注终端模拟,后者依赖 Python 后端,配置成本高、易报错 ImportError: No module named 'jedi'
  • 安装后重启 Sublime,再打开任意 .sh 文件,右下角应显示 Bash(不是 Shell Script

写完脚本想直接运行?别信“Build System”一键执行

Sublime 的 Build System 确实能绑定 sh %f,但实际执行时环境变量缺失、路径不一致、交互式命令(如 read)卡死——这不是配置问题,是设计限制。

  • 安全做法:写完保存,切到终端执行 bash script.sh 或加执行权限后 ./script.sh
  • 真要集成运行:用 Tools → Build System → New Build System…,内容写成:
{   "shell_cmd": "bash -x "$file"",   "file_regex": "^(...*?):([0-9]*):?([0-9]*)",   "selector": "source.shell" }

保存为 BashDebug.sublime-build,再手动选中它。注意 -x 是关键,能看到每步执行过程;不加它,出错时只报 exit code 1,毫无意义。

中文注释乱码或缩进错位?和文件编码与 Tab 设置强相关

运维脚本常含中文注释(如 # 检查磁盘空间),但 Sublime 默认用 UTF-8 无 bom 打开,若文件是 GBK 编码,就会显示方块或乱码;另外 set -e 后面多一个空格,可能让缩进逻辑全乱。

  • 统一用 UTF-8:保存前点右下角编码名(如 UTF-8),选 Reopen with Encoding → UTF-8,再 Save with Encoding → UTF-8
  • Tab 宽度设为 4:Shell 脚本惯例用 4 空格缩进,避免混用 Tab 和空格;在 Preferences → Settings 里确保有:"tab_size": 4, "translate_tabs_to_spaces": true
  • 别用 Sublime 自动格式化:它的 reindentif/then/fi 块容易错位,尤其嵌套多层时;手动对齐更可靠

真正麻烦的是跨平台协作:Linux 写的脚本换到 windows 上编辑,换行符变成 CRLFbash: $'r': command not found 错误就来了。改之前先确认 View → Line Endings → unix

text=ZqhQzanResources