/bin/sh^M:bad interpreter 错误解决

739 阅读1分钟

该文章为本人于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

再次执行就不会有这样的问题了。