
你遇到的报错核心原因是脚本文件的换行符格式不兼容,而非脚本逻辑或CentOS 7系统本身的功能问题,这也是为什么该脚本在AlibabaLinux4能运行、CentOS 7却报错的关键。
报错原因详细解释
Linux系统的换行符是 \n(LF),而Windows系统的换行符是 \r\n(CRLF)。你的脚本文件中混入了Windows格式的 \r 字符(在终端中显示为 ^M),导致脚本第一行的 #!/bin/bash 被系统解析成了 #!/bin/bash\r。
系统会尝试寻找名为 /bin/bash^M 的解释器(^M 就是 \r 的可视化符号),但这个文件根本不存在,因此抛出 bad interpreter: No such file or directory 错误。
AlibabaLinux4可能对这种格式有兼容处理,而CentOS 7对脚本解释器路径的解析更严格,所以触发了报错。
解决方法(任选其一即可)
方法1:用dos2unix工具转换(推荐,最简单)
- 先安装dos2unix(CentOS 7默认可能未安装):
yum install -y dos2unix - 转换脚本的换行符格式为Linux标准:
dos2unix waf.sh
方法2:用sed命令手动清除\r字符
无需安装额外工具,直接执行:
sed -i 's/\r$//' waf.sh
方法3:用vim编辑器转换
- 打开脚本:
vim waf.sh - 进入vim命令模式(按Esc),输入以下命令并回车:
:set fileformat=unix - 保存并退出:
:wq
补充:确保脚本有执行权限
转换后如果仍提示权限问题,执行:
chmod +x waf.sh
总结
- 报错根源是脚本包含Windows换行符
\r,导致解释器路径被篡改(多出^M)。 - 核心解决动作是将脚本换行符从Windows的CRLF转为Linux的LF格式(
dos2unix是最便捷的方式)。 - 转换后检查并赋予脚本可执行权限,即可在CentOS 7正常运行。
