解決 Bash 中的 bad interpreter 錯誤
Yahya Irmak
2023年1月30日
-
解決 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 系統中使用文字編輯器重寫檔案內容。這樣,行尾設定正確,不會出現錯誤。
作者: Yahya Irmak
Yahya Irmak has experience in full stack technologies such as Java, Spring Boot, JavaScript, CSS, HTML.
LinkedIn