React Native项目手动安装CocoaPods出现/bin/sh^M报错
报错根因
这个报错和Xcode命令行工具配置、CocoaPods本身安装没有关系,核心是shell脚本的换行格式不兼容:
报错行里的^M是Windows系统特有的CRLF回车符,macOS的bash解析脚本时会把这个不可见字符算进脚本头指定的解释器路径里——本该找/bin/sh,结果识别成了带回车符的不存在路径,自然抛出“解释器不存在”的错误。
你手动搭建ios目录的过程中,大概率是通过文件拷贝、跨端代码同步把包含configure在内的glog安装脚本转成了Windows换行格式,才触发了这个问题。
解决步骤
- 找到对应出错的脚本位置:这个安装流程来自CocoaPods缓存的glog依赖,路径为
~/Library/Caches/CocoaPods/Pods/Release/glog/下对应你的项目版本的子文件夹。 - 批量修正脚本的换行格式:不需要手动打开文件逐行改,直接在上述glog的版本目录下执行以下命令,把所有shell类脚本的CRLF换行替换为macOS兼容的LF换行:
find ./ -type f \( -name "*.sh" -o -name "configure" \) -exec sed -i '' 's/\r$//' {} \; - 删掉ios目录下之前生成的
Podfile.lock、Pods文件夹残留,重新在ios目录执行pod install即可正常完成安装。
长期避坑
如果后续会跨Windows和Mac同步项目代码,记得把Git的全局换行配置统一设置为LF格式,避免每次拉取代码时自动把项目内的shell脚本转成Windows换行,重复触发同类问题。
内容的提问来源于stack exchange,提问作者andrey.shedko
相关产品推荐
相关产品推荐

