欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 【Linux】解决 Bash 脚本执行时报错 `bad interpreter: No such file or directory`

【Linux】解决 Bash 脚本执行时报错 `bad interpreter: No such file or directory`

2025/5/15 5:17:55 来源:https://blog.csdn.net/qq_37945670/article/details/144315923  浏览:    关键词:【Linux】解决 Bash 脚本执行时报错 `bad interpreter: No such file or directory`

当你将在Windows平台写的shell脚本上传到 Linux 系统执行 Shell 脚本时,可能会遇到如下错误提示:

-bash: ./ci.sh: /bin/bash^M: bad interpreter: No such file or directory

这种错误通常是由于脚本文件中存在 Windows 系统的回车符 ^M 导致的,本文将会带你从底层原理来分析原因和解决办法。

文章目录

    • 原因
    • 解决方法
      • 方法一:使用 `sed` 命令删除回车符
      • 方法二:使用 `dos2unix` 工具

原因

  • 在 Windows 系统中,文本文件的换行符是 \r\n(回车 + 换行)。
  • 而 Linux 系统中,文本文件的换行符仅是 \n(换行)。
  • 当你在 Windows 下创建或编辑脚本文件,然后将其上传到 Linux 服务器后,脚本中残留的 \r(回车符)会导致解释器路径解析错误。

比如:

#!/bin/bash^M

Linux 会将整个路径(包括 ^M)视为解释器,但该路径显然是无效的,因而报错。


解决方法

方法一:使用 sed 命令删除回车符

可以直接使用 sed 命令对文件进行修改,删除所有的 \r 符号:

sed -i 's/\r$//' ./ci.sh

解释:

  • -i:直接修改文件。
  • 's/\r$//':表示替换掉行尾的 \r 符号。
  • ./ci.sh:是需要修复的脚本文件。

执行完后,再次运行脚本即可。


方法二:使用 dos2unix 工具

如果系统中安装了 dos2unix 工具,可以直接将 Windows 格式的文件转换为 Unix 格式:

dos2unix ./ci.sh

若未安装,可通过以下命令安装(以 CentOS 为例):

yum install -y dos2unix

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词