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

weixin_34290000發表於2018-05-09

當我在shell中執行how_paras.sh時,出現了這個錯誤

[root@localhost sbin]# ./how_paras.sh
-bash: ./how_paras.sh: /bin/bash^M: bad interpreter: No such file or directory

-bash: ./how_paras.sh: /bin/bash^M: bad interpreter: No such file or directory 翻譯即:

-bash:./how_paras.sh:/ bin / bash ^ M:糟糕的直譯器:沒有這樣的檔案或目錄

好,那我們來分析一下,為什麼會出現這種情況,這個問題說明什麼,以及如何來解決它!

情景

之前,我都是直接在shell中建立,編寫,執行指令碼,都沒有問題。因為感覺在shell中編寫指令碼不方便。於是使用WinSCP軟體,將在shell中建立的空指令碼,下載到windos系統中,用我的文字編輯器Notepad++來編寫指令碼,將編寫好的指令碼儲存,並上傳到linux系統中去。最後利用遠端工具shell連結linux系統,執行這個指令碼。


why:為什麼會出現這個問題

問題就出在,我把shell中的指令碼下載到windos系統中來進行編輯。

windos中Notepadd++編輯指令碼,使得指令碼檔案格式為DOS格式,即每一行的行位是\r\n來標識。

好,那我開啟vim編輯器確認一下。

[root@localhost sbin]# vim how_paras.sh
//  ... ...此處省略how_paras.sh指令碼內容
//在命令列模式輸入下面這個命令
:set ff?
//顯示結果為
  fileformat=dos                                             1,1           All

總結

1、開啟指令碼確認指令碼檔案格式:vim xxx.sh,:set ff?。xxx.sh代表指令碼檔案


what:這個問題說明什麼

出現這個問題說明在windos系統和linux系統中的檔案格式不一致。


how:如何解決

直接解決方法:

用vim編輯這個指令碼,在命令列模式下,設定檔案的格式,並儲存。

vim xxx.sh,:set ff=unix

或者

在Windos系統中Notepad++軟體中更改,開啟這個檔案:編輯-->轉換為UNIX格式

徹底解決方法:更改Windos系統中Notepad++軟體的檔案方式。改為:NIX格式。

步驟:

  1. 開啟Notepad++:
    • 設定-->首選項-->新建:選擇格式為UNIX;
    • 設定-->首選項-->預設目錄:選擇使用新樣式對話方塊(無副檔名和UNIX支援此功能)

參考連結

1、-bash: ./my_script: /bin/bash^M: bad interpreter: No such file or directory [duplicate]
2、/bin/bash^M: bad interpreter: No such file or directory

相關文章