该文章为本人于2018创作,可能有部分内容已过时
linux运行shell脚本报错:/bin/sh^M:bad interpreter: No such file or directory
这个错误发生在你在windows下编写文件上传到linux服务器去运行的时候。
错误原因:windows和linux的文件换行符不一样,Windows的换行符是CRLF而Linux的是LF。
CR: \r
LF: \n
解决办法:
第一种: Linux下 vi该文件 在命令模式下输入 :set ff=unix 回车
例如 a.sh vi a.sh
:set ff=unix
第二种: Windows使用vscode或其他可以转换CRLF到LF的编辑器,手动点击转换为Linux格式
第三种: 如果是整个项目都需要这样转换,可以使用git仓库进行转换。 在Windows以LF提交到git仓库,再使用Linux clone下来就OK了。
如果上述都无法使用,可以使用第四种: vi a.sh
:%s/\r//g
再次执行就不会有这样的问题了。