点“run code”没反应或报[[ not found,是因为code runner默认用/bin/sh执行脚本,而[[ ]]等是bash特有语法;解决需确保首行#!/usr/bin/env bash无bom、执行chmod +x、并在终端用bash script.sh或./script.sh运行。

为什么点“Run Code”没反应或报 [[: not found
VSCode 本身不执行 Shell 脚本,所谓“运行”其实是 Code Runner 插件调用终端执行命令。它默认用 /bin/sh -c 执行 .sh 文件,但你的脚本大概率写了 [[ ]]、source、$(( )) 或数组——这些是 Bash 特性,/bin/sh 直接不认。
常见现象包括:line 5: [[: not found、declare: command not found、静默退出、cd 不生效、变量未导出。
- 临时验证:在 VSCode 集成终端(
Ctrl+`)里直接运行bash script.sh,如果能跑,就是解释器错配 - 别改
$fullFileName:它可能含空格或特殊字符;$fileName更安全 - 若脚本依赖
~/.bashrc里的 alias 或函数,得显式source ~/.bashrc && $fileName
#!/usr/bin/env bash 必须是第一行且无 BOM
VSCode 不校验 shebang 是否合法,也不会帮你删隐藏字符。哪怕前面有一个空格、一个 UTF-8 BOM 或注释行,系统都会忽略 shebang,退回到用 /bin/sh 执行,Bash 语法立刻崩。
检查方式:终端里运行 head -n1 script.sh | cat -A,看到 ^M 或 M-oM-?M- 就是 BOM;看到 # 前有空格就说明不对。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
-
#!/bin/bash在 macOS Catalina+、Alpine、某些 Docker 镜像里会报No such file or directory,因为 bash 实际在/usr/bin/bash -
#!/usr/bin/env bash是唯一跨平台兼容写法:它通过$PATH查找bash,几乎所有 Unix-like 系统都支持 - Windows 用户注意:纯 PowerShell / CMD 不认
.sh;WSL 下可用,但要确保 locale 是 UTF-8(locale命令看LANG)
必须手动 chmod +x ./script.sh
Linux/macOS 要求脚本有执行权限才能用 ./script.sh 运行。VSCode 是编辑器,不是文件管理器,它既不提示、也不帮你加权限。你保存完脚本,不敲命令,./ 方式永远报 Permission denied。
- 执行时必须用
./script.sh(注意是./开头),不是script.sh - 路径错误也常导致失败:确保你在脚本所在目录下执行,或用完整路径
./path/to/script.sh - 中文路径或参数出问题?不是脚本问题,是终端编码没对齐;VSCode 设置里加
"terminal.integrated.env.linux": {"LANG": "en_US.UTF-8"}
别指望一键调试,bash -x 是最靠谱的追踪方式
VSCode 官方不支持 Bash 断点调试。所谓 “Shell 调试插件” 依赖 bashdb,而它在 macOS 和新版 Linux 上基本不可用,且不支持 Bash 5.0+ 新特性。
- 真实可用的做法:在终端运行
bash -x ./script.sh,它会逐行打印实际执行的命令(含变量展开),效果接近单步 - 配合
set -u(访问未定义变量时报错)、set -e(任一命令失败即退出)提升健壮性 - 生产脚本里别长期开
-x:输出太冗长,也暴露敏感信息
真正卡住的地方往往不是语法,而是 shebang 是否被识别、权限是否已加、解释器是否匹配——这三件事没对齐,再复杂的逻辑也跑不起来。










