shell脚本报错“/bin/bash^M: bad interpreter: No such file or directory”

一、背景

在windows上编辑好shell脚本,然后在linux系统中执行时,报错/bin/bash^M: bad interpreter: No such file or directory。

在查询原因后,发现在windows下创建编辑的shell脚本是dos格式的,而linux却是只能执行格式为unix格式的脚本,所以识别不了。

此时,通过命令查看脚本文件是dos格式还是unix格式,dos格式的文件行尾为^M$ ,unix格式的文件行尾为$,如下所示:

cat -A filename

二、解决方法

1、dos2unix工具

安装工具

sudo apt install dos2unix

dos格式的文件转换为unix格式的文件

dos2unix filename

2、替换方法

直接将回车符替换为空字符串

sed -i "s/\r//" filename

#或者
sed -i "s/^M//" filename

3、vim编辑

编辑文件,执行“: set ff=unix”,将文件设置为unix格式,然后执行“:wq”,保存退出。

vim filename

三、参考

1、https://linuxhint.com/resolve-bin-bash-m-bad-interpreter-issue/

posted @ 2022-08-17 13:59  xyztank  阅读(1637)  评论(0)    收藏  举报