Xcode编译Cordova项目报错sh: bad interpreter: Permission Denied求助
解决Catalina下Xcode编译Cordova项目报
sh: bad interpreter: Permission denied的问题 针对你遇到的这个棘手问题,结合Catalina 10.15.6的系统特性,除了你已经尝试的操作,还有几个针对性的排查和解决方向:
1. 检查脚本的换行符格式
跨平台克隆的项目很容易出现shell脚本换行符变为Windows风格的CRLF,这会直接导致Mac的sh/bash解释器无法识别,触发bad interpreter错误:
- 用终端查看脚本换行符类型:
file path/to/your-script.sh,如果输出包含CRLF line terminators,就说明是这个问题。 - 修复方法:
- 用vim打开脚本,执行
:set ff=unix后输入:wq保存退出; - 或者用命令批量处理:
sed -i '' 's/\r$//' path/to/your-script.sh。
- 用vim打开脚本,执行
2. 重置Cordova的iOS平台文件
克隆项目的iOS平台目录可能残留原项目的权限或配置脏数据,完全重建平台文件大概率能解决这类奇怪的权限冲突:
- 终端进入项目根目录,执行:
cordova platform remove ios cordova platform add ios - 重新用Xcode打开生成的项目,再尝试编译。
3. 清理Xcode的Derived Data缓存
Xcode的构建缓存偶尔会出现权限紊乱,清理后能排除这类干扰:
- 在Xcode中点击
Product->Clean Build Folder(快捷键Cmd+Shift+K); - 或者手动删除对应项目的缓存:打开
~/Library/Developer/Xcode/DerivedData,找到你的项目文件夹删除,再重启Xcode编译。
4. 移除文件的Quarantine隔离属性
Catalina的安全机制会给克隆/下载的文件添加隔离标记,这可能间接影响脚本的执行权限:
- 终端执行命令移除整个项目文件夹的隔离属性:
xattr -rd com.apple.quarantine /path/to/your-project-folder - 之后重新给脚本添加执行权限
chmod +x path/to/your-script.sh,再尝试编译。
5. 验证脚本的Shebang行
确保脚本第一行的解释器路径完全正确,比如:
#!/bin/sh
或者
#!/bin/bash
如果路径写错(比如误写为#!/usr/bin/sh),也会触发bad interpreter错误,修正后再测试。
如果以上方法都无效,可以尝试创建一个全新的Cordova项目,把你的代码文件复制进去再编译,彻底排除克隆项目的隐藏配置问题。
内容的提问来源于stack exchange,提问作者Jorge Lizaso
相关产品推荐
相关产品推荐

