shell腳本中執行時提示「沒有那個文件或目錄」的解決辦法

shell腳本中執行時提示「沒有那個文件或目錄」的解決辦法linux

出現bad interpreter:No such file or directory的緣由,是文件格式的問題。這個文件是在Windows下編寫的。換行的方式與Unix不同,可是在vim下面若是不Set一下又徹底看不出來。shell

問題分析:
一、將windows 下編寫好的SHELL文件,傳到linux下執行,提示出錯。
二、出錯信息:bad interpreter: 沒有那個文件或目錄。vim

問題緣由:
由於操做系統是windows,在windows下編輯的腳本,因此有可能有不可見字符。腳本文件是DOS格式的
即每一行的行尾以\r\n來標識, 其ASCII碼分別是0x0D, 0x0A.windows

解決方法:
能夠有不少種辦法看這個文件是DOS格式的仍是UNIX格式的, 仍是MAC格式的
(1) vim filename
而後用命令 :set ff
可看到dos或unix的字樣,若是的確是dos格式的, 那麼用set ff=unix把它強制爲unix格式的,,而後存盤退出後就可運行。ide

一般來講,Windows中默認的文件格式是GBK(gb2312),而Linux通常都是UTF-8,因此Linux下打開windows的文件會有亂碼的狀況。另外,有時要將文件進行編碼轉換,如將簡體中文轉換爲繁體中文。編碼

vim中查詢修改文件編碼格式操作系統

set fileencoding
查看如今文本的編碼unix

:set fenc=編碼
轉換當前文本的編碼爲指定的編碼utf-8

:set enc=編碼
以指定的編碼顯示文本,但不保存到文件中。
這裏的「編碼」常見爲gbk utf-8 big5 cp936it

:set ff
查看當前文本的模式類型,通常爲dos,unix

:set ff=dos
設置爲dos模式
也能夠用一下方式轉換爲unix模式

:%s/^M//g等同於:set ff=unix

相關文章
相關標籤/搜索