bin sh^M bad interpreter No such file or directory解决

发布于 2018-11-21  639 次阅读


编写了shell脚本后,运行时有时会出现:
^M bad interpreter No such file or directory
的报错,本文提供了解决方案

原因

Shell脚本在windows系统下用记事本文件编写的,由于最终在linux下执行,其不同系统的文件格式(CR/LF)不同,在windows下换行是\r\n,而linux下是\n,最终导致了

^M bad interpreter No such file or directory

解决方法

1. 在编写文件时指定文件格式

不推荐在windows下使用记事本来进行一些文字编辑,我用的是editPlus,在编辑文本时就指定文件格式以及编码。

EditPlus改变文件格式的方法为:

文档->文件格式->编辑文档格式

2. 使用vi\vim直接转换文件格式

  • 确保用户对文件有读写及执行权限
    chmod a+x test.sh

  • vi打开文件
    vi test.sh

  • 查看当前文件类型
    :set ff:set fileformat

  • 可以看到如下信息
    fileformat=dosfileformat=unix

  • 更改文件格式
    :set ff=unix:set fileformat=unix

  • 存盘退出
    :wq


【马摇金辔破香尘,我自御剑乘风去】