- 論壇徽章:
- 0
|
出現(xiàn)bad interpreter:No such file or directory的原因是文件格式的問題。這個(gè)文件是在Windows下編寫的。換行的方式與Unix不一樣,但是在VI下面如果不Set一下又完全看不出來。
解決方法:
1、上傳到linux主機(jī)運(yùn)行
chmod +x back
./back
錯(cuò)誤提示如下:
bash: ./back : bad interpreter:No such file or directory
2、錯(cuò)誤分析:
因?yàn)椴僮飨到y(tǒng)是windows,在windows下編輯的腳本,所以有可能有不可見字符。
從你的腳本及報(bào)告的錯(cuò)誤看來, 很有可能是你的腳本文件是DOS格式的, 即每一行的行尾以\r\n來標(biāo)識(shí), 其ASCII碼分別是0x0D, 0x0A.
可以有很多種辦法看這個(gè)文件是DOS格式的還是UNIX格式的, 還是MAC格式的
(1). vi filename
然后用命令
:set ff?
可以看到dos或unix的字樣. 如果的確是dos格式的, 那么你可以用set ff=unix把它強(qiáng)制為unix格式的, 然后存盤退出. 再運(yùn)行一遍看.
(2). 用joe filename
如果是DOS格式的, 那么行尾會(huì)有很多綠色的^M字樣出現(xiàn). 你也可以用上述辦法把它轉(zhuǎn)為UNIX格式的.
(3). 用od -t x1 filename
如果你看到有0d 0a 這樣的字符, 那么它是dos格式的, 如果只有0a而沒有0d, 那么它是UNIX格式的, 同樣可以用上述方法把它轉(zhuǎn)為UNIX格式的.
轉(zhuǎn)換不同平臺(tái)的文本文件格式可以用
1. unix2dos或dos2unix這兩個(gè)小程序來做. 很簡單. 在djgpp中這兩個(gè)程序的名字叫dtou和utod, u代表unix, d代表dos
2. 也可以用sed 這樣的工具來做:
sed 's/^M//' filename > tmp_filename
mv -f tmp_filename filename
來做
特別說明:^M并不是按鍵shift + 6產(chǎn)生的^和字母M, 它是一個(gè)字符, 其ASCII是0x0D, 生成它的辦法是先按CTRL+V, 然后再回車(或CTRL+M)
另外, 當(dāng)SHELL程序報(bào)告command not found時(shí), 總是去檢查一下你的PATH里面有沒有程序要用到的每一個(gè)命令(沒指定絕對(duì)路徑的那種). 你這么小的程序, 可以一行一行核對(duì).
本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u1/47356/showart_464707.html |
|