gradlew报“bad interpreter: No such file or directory”本质是shebang解析失败,主因包括:Windows换行符(^M)、硬编码解释器路径不存在(如/alpine无/bin/sh)、env路径异常或脚本无执行权限;修复需检查head -n1、用sed修正shebang、chmod +x授权,并区分Windows用gradlew.bat、Linux/macOS用gradlew。

gradlew 报错 “bad interpreter: No such file or directory” 怎么办
这不是 Gradle 本身出问题,而是 gradlew 脚本的解释器路径失效了——它硬编码指向了一个你系统里不存在的 /bin/sh 或 /usr/bin/env(常见于从 Windows 复制到 macOS/Linux,或容器内执行时)。脚本第一行类似 #!/usr/bin/env sh,但目标环境没这个可执行文件,或者权限/符号链接坏了。
检查并修复 gradlew 的 shebang 行
用 head -n1 gradlew 看第一行内容。常见异常包括:
-
#!/bin/sh→ 某些 Alpine Linux 容器里只有/bin/ash,没有/bin/sh -
#!/usr/bin/env sh→ 如果env不在/usr/bin/env(如 NixOS 或某些精简系统),就会失败 -
^M结尾(Windows 换行符)→ 在 Linux/macOS 下会把sh^M当成解释器名,自然找不到
修复方式:sed -i '1s|^#!.*|#!/usr/bin/env bash|' gradlew(Linux/macOS);Windows 用户用 VS Code 或 Notepad++ 切换为 LF 换行并保存。
chmod +x gradlew 必须执行
即使 shebang 正确,gradlew 没有可执行权限也会触发同类错误(尤其从 zip 解压、Git clone 后未保留权限时)。运行:
-
chmod +x gradlew(macOS/Linux) - Windows WSL 下同样需要该命令,纯 CMD 不用但也不能直接双击运行
- Android Studio 同步前务必确认该权限已生效,否则它会静默 fallback 到系统全局
gradle命令(可能版本不匹配)
Windows 上 gradlew.bat 执行报错 “bad interpreter”?那是误用了 bash
Windows 默认应运行 gradlew.bat,不是 gradlew。如果你在 CMD/PowerShell 里手动敲了 ./gradlew 或启用了 Git Bash,就可能触发 bash 解释器去跑 bat 文件——结果就是解释器试图把批处理指令当 shell 脚本解析,报错信息五花八门,但根源是“用错了入口”。
- 正确做法:CMD 中直接敲
gradlew(不带扩展名,Windows 会自动匹配 .bat) - PowerShell 中需加
.\gradlew.bat,或先运行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser - Git Bash 中想用 wrapper,必须确保用的是
gradlew(shell 脚本版),且已修复 shebang 和权限
真正容易被忽略的是:很多 CI 脚本(比如 GitHub Actions 的 run: ./gradlew build)默认在 Linux runner 上执行,一旦项目里 gradlew 是 Windows 换行或权限丢失,就必然卡在这一步——它不报 Gradle 错,只报 interpreter 错,排查方向很容易偏。











