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/

浙公网安备 33010602011771号