王旭阳个人博客

wxy

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

2022-09-14

问题

在Linux下执行脚本发现报错:/bin/sh^M: bad interpreter: No such file or directory

或者 bash: /bin/bash^M:解释器错误: 没有那个文件或目录

原因

错误原因是:在 windows 下编写的脚本

解决

方案一(手工转换为 unix 格式)

  • 在vi命令模式中使用以下命令查看格式
    :set ff
  • 修改为 unix 格式
    set ff=unix

但是这样一个一个修改会很麻烦。可以使用 dos2unix 工具修改

方案二(dos2unix 转换为 unix 格式)

# 安装dos2unix
apt install dos2unix

# 转换文件格式
dos2unix ./*.sh

再次执行就会发现正常了;