场景:
开发工具由eclipse换成了idea,vcs由svn换成git后,项目的自动安装脚本报错了. /bin/bash^M: bad interpreter
处理过程:
查阅网上的资料发现:这种情况是因为shell脚本在windows环境下进行编辑后,换行符由\n变成了\r\n; 手动处理方式为 sed -i "s/\r//" filename ,果然手动执行后这个替换命令后,shell脚本执行成功. 但是项目中带了很多shell脚本,在做自动化安装时调用,在调用命令前加替换\r的命令挺傻;
查看idea编辑器的换行符一栏,当前工程下的shell换行符都是 CRLF Windows (\r\n),在idea File-File properties-Line separators 选择 LF - unix and macOs (\n); 检查目录下shell文件的换行符,批量替换一部分成功改成了LF ,还有一部分顽劣分子还是 CRLF. 批量替换的想法宣告失败.我已经陷入了寻找如何成功批量替换换行符的泥沼;
期间同事在eclipse上拉取git代码,发现shell脚本同样无法运行; 这样看来,问题是出在了git仓库上了. 打开搜索引擎,寻找关于git 和换行符的关键字;
找到一篇博文: https://blog.csdn.net/weixin_33275327/article/details/81485051?tdsourcetag=s_pctim_aiomsg
解决方法:
1. git设置配置: git config --global core.autocrlf input
2. 重新拉取shell脚本,问题解决;
长城不独埋剑骨,吾辈书生亦有拳