跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

VSCode怎么运行Shell脚本(sh/bash)

VSCode本身不执行Shell脚本,点“运行”无反应或报错主因是三件事未做:未写正确shebang(推荐#!/usr/bin/env bash)、未执行chmod +x添加执行权限、未在终端中用bash script.sh或./script.sh正确调用。 VSCode 本身不执行 Shell 脚本,它只是编辑器;点“运行”没反应、报
Permission denied
或
command not found
,基本都卡在这三件事上:
#!/usr/bin/env bash
没写对、没加执行权限、没在终端里用正确方式调用。 为什么点右键“Run Code”或按 Ctrl+Alt+N 没反应 Code Runner 插件默认用
/bin/sh
执行
.sh
文件,但你的脚本很可能用了
[[ ]]
、
source
、数组等 Bash 特有语法——
/bin/sh
直接报错或静默失败。 常见错误现象:
line 5: [[: not found
、
declare: command not found
、
source: not found
临时验证:在 VSCode 集成终端(
Ctrl+`
)里手动运行
bash script.sh
,如果能跑,说明就是解释器不匹配 改法(推荐轻量可控):不依赖 Code Runner,直接进终端敲
bash script.sh
——绕过权限、shebang、PATH 所有歧义 非要改 Code Runner:在设置里搜
code-runner.executorMap
,把
shellscript
对应值改成
"bash -c 'cd $dir && bash $fileName'"
必须做的三件事:shebang、chmod +x、终端路径 缺一不可。VSCode 不会自动帮你加权限,也不会检查 shebang 是否合法。
#!/usr/bin/env bash
必须是文件第一行,前面不能有空格、BOM 或注释 保存后,在集成终端中执行:
chmod +x ./script.sh
(注意是
./
开头,不是
script.sh
) 确保当前终端工作目录和脚本位置一致;右键文件 → “Open in Integrated Terminal” 可自动
cd
进去 之后才能安全运行:
./script.sh
;如果仍报错,优先用
bash script.sh
排查 怎么让
./script.sh
真正可执行(跨平台兼容)
#!/bin/bash
在 macOS Catalina+、Alpine Linux、某些 Docker 镜像里会直接报
No such file or directory
,因为 bash 不在那个路径。 VSCode 1.118 微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。 下载 用
#!/usr/bin/env bash
更稳妥:它通过
$PATH
查 bash 位置,几乎所有 Unix-like 系统都支持 Windows 用户注意:纯 PowerShell / CMD 不认
.sh
;WSL 下完全可用,但要确保 WSL 中的 locale 是 UTF-8(
locale
命令看
LANG
) 中文路径或参数出问题?不是脚本问题,是终端编码没对齐;VSCode 设置里加
"terminal.integrated.env.linux": {"LANG": "en_US.UTF-8"}
想“运行并解析输出”,别指望一键按钮 VSCode 的 Code Runner 和 Tasks 都只负责执行并打印 stdout/stderr,不提供回调、不暴露原始流、也不支持交互式
read
。 简单解析:在终端里直接管道处理,比如
./script.sh | grep "error"
或
./script.sh | jq '.code'
复杂逻辑:配
tasks.json
,用
command
字段写完整 shell 行,例如:
"bash -c './script.sh | python3 parse.py'"
注意单双引号嵌套容易翻车;含空格路径时,优先避免,或改用
shell
类型任务 +
args
数组传参 调试时别信图形断点——
bash -x ./script.sh
加
set -u
和
set -e
更快定位问题 真正卡住人的从来不是语法,而是 shebang 写错路径、忘了 chmod、或者在错误的 shell 环境下执行——这些地方没对齐,后面所有调试和解析都是徒劳。

相关文章