-bash: ./run.sh: /bin/bash^M: bad interpreter: No such file or directory 报错解决方法

原因:shell脚本文件是dos格式,即每一行结尾以\r\n来标识,而unix格式的文件行尾则以\n来标识。

查看脚本文件是dos格式还是unix格式的几种办法。

(1)cat -A filename 从显示结果可以判断,dos格式的文件行尾为^M,unix格式的文件行尾为。

(2)od -t x1 filename 如果看到输出内容中存在0d 0a的字符,那么文件是dos格式,如果只有0a,则是unix格式。

(3)vi filename打开文件,执行 : set ff,如果文件为dos格式在显示为fileformat=dos,如果是unxi则显示为fileformat=unix。

解决方法

方法一:

bash 复制代码
 [root@root bin]# dos2unix run.sh
dos2unix: converting file run.sh to UNIX format ...

方法二:

bash 复制代码
vim mysell.sh
 
:get fileformat          #查看本文件的格式
:set fileformat=unix     #设置文件为unix
:wq                      #保存

方法三:

bash 复制代码
#使用sed命令,直接替换结尾符为unix格式
 
sed -i "s/\r//" run.sh
或者 
sed -i "s/^M//" run..sh
 
相关推荐
晚风叙码7 分钟前
Linux 进程概念(上):从冯诺依曼到进程调度
linux·运维·计算机外设
邪修king21 分钟前
Re:Linux系统篇(三十八):进程间通信ChapterSystem V 信号量深度解析|同步互斥、内核源码、C 指针多态、实战代码
java·linux·c语言
坤坤子吖22 分钟前
Linux网络编程基础:从 MAC 到 IP,理解网络数据是怎么传输的
linux·网络·笔记·学习
琥珀.9 小时前
mysql中json数组转列表查询
linux·运维·服务器
dawnsky.liu10 小时前
在 RHEL 中使用 goose 实现远程主机管理
linux·运维·ai
Linux运维技术栈11 小时前
CVE-2026-91403 高危漏洞修复:Rocky Linux 9 多版本 JDK 环境清理实操
java·linux·运维
slongzhang_13 小时前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
叼烟扛炮13 小时前
Linux 学习笔记(三十三):线程互斥——互斥锁(Mutex)与死锁
linux·运维·服务器·笔记·学习·1024程序员节
无足鸟ICT13 小时前
【RHCA+】who命令(查看已登陆用户)
linux·运维·服务器
Escalating_xu14 小时前
【Linux 网络编程】应用层协议 HTTP(下):Header、连接管理与 C++ HTTP 服务器
linux·服务器·网络