1. 程式人生 > >linux和Windows檔案不相容(shell指令碼執行錯誤 $'\r': command not found)

linux和Windows檔案不相容(shell指令碼執行錯誤 $'\r': command not found)

背景

將linux通過samba服務對映到windows平臺,在win平臺下建立一個指令碼,然後切換到linux下執行,報錯$’\r’: command not found。

原因

win平臺下的換行是:回車符 + 換行符,也就是\r\n。unix下是換行符\n。linux下不識別\r為回車符,所以導致每行的配置都多了個\r,因此是指令碼編碼的問題。

解決

(1)在linux上執行$ dos2unix xx.sh,再次執行指令碼,報錯消失;
(2)在linux下用vim開啟,強制儲存為unix格式:

vim test.sh
:set ff?
// 顯示dos的話
:set ff=unix
:wq