解決 Bash 中的 bad interpreter 錯誤

Yahya Irmak 2023年1月30日
  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 系統中使用文字編輯器重寫檔案內容。這樣,行尾設定正確,不會出現錯誤。

作者: 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