You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git多层级配置冲突是否会导致shell脚本出现/bin/sh^M解释器错误?

配置冲突影响结论

  • 你观察到的Git多层级配置冲突不会导致后续Shell脚本出现跨环境换行符异常:Git配置的读取优先级为 本地仓库配置(.git/config) > 全局用户配置(C:/Users/testUser/.gitconfig) > 系统级配置(C:\\ProgramData/Git/config),你的本地、全局配置已经将core.autocrlf设为false、core.eol设为lf,会覆盖系统级的core.autocrlf=true配置,不会自动将脚本转换为CRLF格式。
  • 你之前遇到的/bin/sh^M: bad interpreter报错,是因为修改Git配置前,仓库中已经存储了CRLF格式的build.sh文件,配置变更不会自动修改已有文件的换行符。

彻底修复方案

  1. 先验证当前本地build.sh的换行符格式,Git Bash下执行:
# 输出中每行末尾存在^M则代表是CRLF格式
cat -A build.sh
  1. 转换当前文件换行符为LF:
# Git Bash自带dos2unix工具,也可以用IDE重新保存为LF格式
dos2unix build.sh
  1. 为了避免团队其他成员的本地Git配置导致同类问题,建议在仓库根目录新增.gitattributes文件,显式指定Shell文件的换行符规则,该规则优先级高于所有本地Git配置:
*.sh text eol=lf
  1. 提交修改后的build.sh和.gitattributes文件到远程仓库即可。处理完成后所有环境拉取的.sh文件都会统一使用LF换行符,不会再出现Linux环境执行报错的问题。

内容的提问来源于stack exchange,提问作者JohnDoeDeer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 21:39:01