Linux执行脚本报错:-bash: ./mylife.sh: /bin/sh^M: bad interpreter: Text file busy
发布日期:2025-04-09 07:19:33 浏览次数:9 分类:精选文章

本文共 692 字,大约阅读时间需要 2 分钟。

这个错误信息提示了两个主要问题。首先,错误信息中的/bin/sh^M包含了一个回车符^M,这通常出现在Windows系统中,而在Linux或Unix系统中是不必要的。其次,Text file busy通常被认为是一个误导性错误,实际问题很可能出在文件中的回车符处理上。这个问题通常发生在Windows系统编辑的脚本文件被直接传输到Linux系统执行时。Windows使用的是CRLF(回车加换行)作为行结束符,而Linux只使用LF(换行)作为行结束符。这种差异会导致脚本文件在Linux环境中被误解,从而产生错误。要解决这个问题,您可以使用dos2unix工具来转换文件。对于尚未安装该工具的Linux发行版用户,可以通过包管理器进行安装。例如,在基于Debian的系统(如Ubuntu)上,可以使用以下命令安装:

sudo apt-get update && sudo apt-get install dos2unix
安装完成后,可以使用dos2unix将脚本文件转换:
dos2unix mylife.sh
如果您没有dos2unix工具,也可以使用sed命令删除文件中的回车符:
sed -i 's/\r$//' mylife.sh
请注意,-i选项会直接修改文件。建议在不加-i选项时先运行命令查看输出,确认无误后再使用带有-i的命令。完成这些步骤后,您的脚本文件应该可以在Linux系统上正常执行。如果仍然遇到权限问题,请确保脚本文件具有执行权限。可以使用chmod命令赋予执行权限:
chmod +x mylife.sh
然后再次尝试执行脚本:
./mylife.sh
上一篇:Linux持续学习者的实用命令:sed
下一篇:Linux执行Cron Job失败,在Shell sh下执行却能成功 - 环境变量?

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年05月01日 09时13分51秒