解决 Bash 中的 bad interpreter 错误
Yahya Irmak
2023年1月30日
2022年4月20日
-
解决 Bash 中的
/bin/bash^M: bad interpreter
错误 -
更改 Windows 中的 EOL 转换以解决 Bash 中的
/bin/bash^M: bad interpreter
错误 -
使用
dos2unix
命令解决 Bash 中的/bin/bash^M: bad interpreter
错误 -
使用
sed
命令解决 Bash 中的/bin/bash^M: 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
。
例如:
- 在
Sublime Text
中,你可以在View
选项卡上的Line Endings
设置中选择Unix
。 - 在
Notepad++
中,你可以在Edit
选项卡上的EOL Conversion
设置中选择Unix (LF)
。
你可以在 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
除了所有这些方法之外,你还可以在 Unix 系统中使用文本编辑器重写文件内容。这样,行尾设置正确,不会出现错误。
Author: Yahya Irmak
Yahya Irmak has experience in full stack technologies such as Java, Spring Boot, JavaScript, CSS, HTML.
LinkedIn