天天看點

執行腳本出現bin/bash: bad interpreter: No such file or directory

剛剛學習 SHELL 寫了一個簡單的例子 發生如下錯誤

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

VI打開檔案,沒發現任何問題,

把/bin/bash改成/bin/sh

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

依然報錯,腳本内容在VI下沒有任何問題,仔細一看錯誤消息,^M..明顯在第一行末尾被加入了個^M,

這種情況應該有兩種原因

1.在WIN底下用文本編輯工具修改過參數變量,在儲存的時候沒注意編碼格式造成的,

2.也有可能是在VIM裡修改,第一行末尾按到ctrl_v

錯誤原因之一很有可能是你的腳本檔案是DOS格式的, 即每一行的行尾以\r\n來辨別, 其ASCII碼分别是0x0D, 0x0A.

可以有很多種辦法看這個檔案是DOS格式的還是UNIX格式的, 還是MAC格式的

(1). vi filename

然後用指令

:set ff?

可以看到dos或unix的字樣. 如果的确是dos格式的, 那麼你可以用set ff=unix把它強制為unix格式的, 然後存盤退出. 再運作一遍看.

2.可以用執行dos2unix 指令轉換編碼

#dos2unix myshell.sh

3..也可以用sed 這樣的工具來做:

sed 's/^M//' filename > tmp_filename

mv -f tmp_filename filename

來做

特别說明:^M并不是按鍵shift + 6産生的^和字母M, 它是一個字元, 其ASCII是0x0D, 生成它的辦法是先按CTRL+V, 然後再回車(或CTRL+M)

關于^M

new line of DOS/Windows

new line of dos/win: 0X0d0a

本文轉自 baishuchao 51CTO部落格,原文連結:http://blog.51cto.com/baishuchao/1940459

<a href="http://blog.51cto.com/search/result?q=%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC%E5%87%BA%E7%8E%B0bin%2Fbash%3A+bad+" target="_blank">執行腳本出現bin/bash: bad</a>