vscode写bash脚本必须配置shellcheck和bash-language-server,否则无高亮、无跳转、报错静默、调试失败;.sh文件显示plain text因vscode依赖language id而非后缀,须配"files.associations": {"*.sh": "shellscript"};shellcheck默认按posix检查,需设"shellcheck.shell": "bash"并确保shebang为#!/usr/bin/env bash;调试需装bashdb及rogalmic.bash-debug,launch.json中指定bashdbpath;code runner默认用/bin/sh执行,应改为bash或直接终端运行bash script.sh。

VSCode 里写 Bash 脚本,不配好 shellcheck 和 bash-language-server,就等于在裸机上敲命令——高亮没有、变量跳转失效、报错静默、调试直接报 bashdb not found。
为什么 .sh 文件打开是 Plain Text?
VSCode 不靠后缀自动识别语言,它只认 language id。没配置,就永远显示 “Plain Text”,后续所有功能(补全、检查、调试)全挂掉。
- 点击右下角语言标签 → 选
Shell Script是临时解法; - 永久生效必须加配置:
"files.associations": {"*.sh": "shellscript"}到settings.json; - 如果脚本名是
deploy、build无后缀,得单独加:"deploy": "shellscript"; - 装了
Shell Format或Shell Launcher这类插件,对语言识别完全无效,别浪费时间。
ShellCheck 总是标红 $PWD 或 local var=1?
不是你写错了,是 ShellCheck 默认按 POSIX sh 标准检查,而你的脚本明确跑在 Bash 下。它把 Bash 合法语法当“兼容性风险”标出来。
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
- 确保脚本首行有明确 shebang:
#!/usr/bin/env bash(比#!/bin/bash更兼容); - 在
settings.json中加:"shellcheck.shell": "bash",强制它按 Bash 解析; - 若仍被误报 SC2034/SC2155 类警告,说明插件没读到 shebang —— 检查是否保存了文件、是否被其他插件劫持语言模式;
- 别用
-e SC2086全局屏蔽未引号变量警告,那是真 bug 高发区,该修就得修。
点 F5 调试报错 “bashdb not found”?
VSCode 自带调试器不支持 Bash,bash-debug 扩展只是个桥梁,真正干活的是系统级的 bashdb 工具。路径不对、没装、或 VSCode 没读到 PATH,都会卡在这一步。
- 先终端里运行
bashdb --version,确认已安装(macOS:brew install bashdb;Ubuntu:sudo apt install bashdb); - 再运行
which bashdb,拿到绝对路径,比如/opt/homebrew/bin/bashdb; - 在
.vscode/launch.json的配置里显式指定:"bashdbPath": "/opt/homebrew/bin/bashdb"; - 调试配置中
"type": "bashdb"必须对应已安装的rogalmic.bash-debug扩展(不是已停更的le0pard.bash-debug); - 断点设在
#!/usr/bin/env bash之后第一行才有效,shebang 行本身不能打断点。
Code Runner 点“运行”却报 [[: not found?
Code Runner 默认用 /bin/sh 执行 .sh 文件,但 [[、$(( ))、数组等全是 Bash 特性,在 POSIX sh 下直接崩。
- 改
code-runner.executorMap里shellscript对应项为:"bash -c 'source ~/.bashrc; $fullFileName'"; - 更推荐绕过 Code Runner:按
Ctrl+`呼出集成终端,手动敲bash script.sh—— 权限、环境、解释器全由你掌控; - 如果坚持用
./script.sh,必须提前chmod +x script.sh,且 shebang 必须存在且无 BOM / 空格; - 别信“自动加执行权限”插件,VSCode 从不修改文件权限,这是操作系统层行为。
最常被忽略的一点:VSCode 的集成终端和调试器用的是两套环境变量加载逻辑。~/.bashrc 里的 alias、函数、PATH 修改,调试时默认不生效,得在 launch.json 的 env 字段里手动补全,或者改用 bash -i -c 启动方式。










