Mac系统中sh无法解析./gradlew脚本的问题求助
解决Gradlew脚本在类Unix系统中执行失败的问题
排查与修复步骤
1. 确保换行符彻底转换为LF
即便已经用dos2unix处理过仓库文件,也可能存在个别文件转换不彻底的情况,直接针对gradlew脚本单独处理:
dos2unix ./gradlew
处理后验证格式:
file ./gradlew
正常输出应为ASCII text或shell script, ASCII text executable,若仍出现CRLF字样,重复执行转换命令即可。
2. 指定bash执行脚本规避shell兼容性问题
zsh与旧版本bash脚本可能存在兼容性冲突,可直接强制用bash运行:
bash ./gradlew <你的任务名>
如果此方法有效,可修改gradlew的shebang行(脚本第一行):将#!/usr/bin/env sh替换为#!/usr/bin/env bash,保存后再尝试直接执行./gradlew。
3. 确认bash路径正确性
部分系统中bash的安装路径可能不是/usr/bin/bash,先查找实际路径:
which bash
若输出为/bin/bash,则将gradlew的shebang改为#!/bin/bash,或保留#!/usr/bin/env bash让系统自动适配。
4. 重新生成适配当前系统的gradlew脚本
如果上述方法均无效,直接用Gradle重新生成脚本:
gradle wrapper
执行前确保本地已安装Gradle(可通过gradle -v验证),此命令会根据当前系统环境生成适配的gradlew文件,覆盖原Windows版本脚本。
内容的提问来源于stack exchange,提问作者mitchkman
相关产品推荐
相关产品推荐

