解决 Bash 中的 bad interpreter 错误

Yahya Irmak 2023年1月30日 2022年4月20日
  1. 解决 Bash 中的 /bin/bash^M: bad interpreter 错误
  2. 更改 Windows 中的 EOL 转换以解决 Bash 中的 /bin/bash^M: bad interpreter 错误
  3. 使用 dos2unix 命令解决 Bash 中的 /bin/bash^M: bad interpreter 错误
  4. 使用 sed 命令解决 Bash 中的 /bin/bash^M: bad interpreter 错误
解决 Bash 中的 bad interpreter 错误

在 Unix/Linux 操作系统中创建的文件和在 DOS/Windows 操作系统中创建的文件的行尾不同。这种差异可能会导致在一个操作系统中创建的文件不能在另一个操作系统中执行。

本文解释了如何解决这些错误之一,即 Linux Bash 中的 /bin/bash^M: bad interpreter: No such file or directory 错误。

解决 Bash 中的 /bin/bash^M: bad interpreter 错误

Unix 操作系统使用换行符 ("\n") 作为行尾。但是,Windows 操作系统使用回车和换行 ("\r\n")。

所以你不能在 Unix 上运行用 Windows 编写的 bash 脚本。你必须清除回车符才能执行文件。

本文的其余部分解释了解决此错误的不同方法。

更改 Windows 中的 EOL 转换以解决 Bash 中的 /bin/bash^M: bad interpreter 错误

Windows 上的文本编辑器默认将行尾设置为 CRLF。在你正在使用的应用程序的设置中将其更改为 LF

例如:

  1. Sublime Text 中,你可以在 View 选项卡上的 Line Endings 设置中选择 Unix
  2. Notepad++ 中,你可以在 Edit 选项卡上的 EOL Conversion 设置中选择 Unix (LF)

eol 转换

你可以在 Unix 操作系统上执行此文件。它不会再给出错误了。

使用 dos2unix 命令解决 Bash 中的 /bin/bash^M: bad interpreter 错误

doc2unix 命令行工具是一个 DOS 到 Unix 文本文件格式转换器,反之亦然。我们可以使用这个工具使我们的文件与 Unix 兼容。

它的用法如下。

dos2unix test.sh

该文件将被转换为 Unix 格式。你现在可以执行该文件。

./file.sh

使用 sed 命令解决 Bash 中的 /bin/bash^M: bad interpreter 错误

sed 命令行工具对输入流执行文本转换。你可以使用以下命令删除文件中的 "\r" 字符。

sed -i -e 's/\r$//' file.sh

现在你可以执行该文件而不会出错。

./file.sh

sed

除了所有这些方法之外,你还可以在 Unix 系统中使用文本编辑器重写文件内容。这样,行尾设置正确,不会出现错误。

Author: Yahya Irmak
Yahya Irmak avatar Yahya Irmak avatar

Yahya Irmak has experience in full stack technologies such as Java, Spring Boot, JavaScript, CSS, HTML.

LinkedIn

相关文章 - Bash Error