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

Shell 文件没高亮?检查文件关联是否正确
Sublime 默认不会把 .sh 文件当成 Shell 脚本处理,常见现象是写完 #!/bin/bash 后整段灰扑扑、没有语法高亮、关键词也不变色。根本原因不是插件没装,而是当前文件没被识别为 Shell 类型。
- 手动设置:打开文件后,点右下角语言名(比如显示 “Plain Text”),在弹出菜单里选
Shell Script→Bash - 永久绑定:用
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS)调出命令面板,输入Set Syntax: Shell Script,回车确认;之后再保存为.sh后缀,Sublime 通常会记住该关联 - 注意:如果文件名不含
.sh(比如叫deploy或Dockerfile),得靠View → Syntax → Open all with current extension as…手动绑定扩展名
用 Package Control 装 Bash 插件前先确认需求
Sublime 自带的 Shell Script 语法已覆盖大部分 Bash 场景,但对 [[ ]]、数组展开、进程替换($()等现代 Bash 特性支持弱,容易误判为错误或不着色。这时候才需要第三方增强。
- 推荐装
ShellScript(作者 wbond):比默认语法更准,支持bash -n静态检查提示,且不破坏原有快捷键 - 别装
Shell-Prompt或Bash-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 自动格式化:它的
reindent对if/then/fi块容易错位,尤其嵌套多层时;手动对齐更可靠
真正麻烦的是跨平台协作:Linux 写的脚本换到 Windows 上编辑,换行符变成 CRLF,bash: $'\r': command not found 错误就来了。改之前先确认 View → Line Endings → Unix。










