因為大部分人使用的作業系統是windows,同時也因為windows的視覺化介面做得比較人性化,
所以在修改linux的一個sh檔案時,為了方便拉到window上用editplus編輯,上傳回linux去後,
這個SH卻不能執行,錯誤提示是:: command not found。bad interpreter: No such file or directory。
原因是CR/LF問題,在dos/window下按一次回車鍵實際上輸入的是“回車(CR)”和“換行(LF)”,
而linux/unix下按一次回車鍵只輸入“換行(LF)”,所以修改的sh檔案在每行都會多了一個CR,所以linux下執行時就會報錯找不到命令。
舉出幾種解決方法:
1、在editplus中“文件->檔案格式(CR/LF)->UNIX”,這樣linux下就能按unix的格式儲存檔案
(UltraEdit):File-->Conversions-->DOS->UNIX即可。
2、在vim中,輸入:set ff=unix,同樣也是轉換成unix的格式。
首先要確保檔案有可執行許可權
#sh>chmod a+x filename
然後修改檔案格式
#sh>vi filename
利用如下命令檢視檔案格式
:set ff 或 :set fileformat
可以看到如下資訊
fileformat=dos 或 fileformat=unix
利用如下命令修改檔案格式
:set ff=unix 或 :set fileformat=unix
:wq (存檔退出)
最後再執行檔案
#sh>./filename
3、在windows下使用UltraEdit中開啟.sh檔案,按Ctrl+H切換到16位狀態,搜尋0D,刪除之,然後儲存就可以了。
轉自:http://www.4520.info/post/269/