Linux下的.sh檔案在windows下修改後無法執行

因為大部分人使用的作業系統是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/