1. 程式人生 > >[linux]windows上編寫的shell指令碼linux上報錯,Bom問題

[linux]windows上編寫的shell指令碼linux上報錯,Bom問題

使用nodepad++編輯好的bash指令碼,在linux上執行就會出出錯。

# /etc/init.d/nginx nginx
-bash: /etc/init.d/nginx: /bin/bash^M: bad interpreter: No such file or directory

出現這個錯誤的原因,windows下每一行的結尾是\n\r,而在linux下檔案的結尾是\n。

還有個容易錯的就是utf-8檔案有麼有bom的問題,關於bom這個問題值得大家關注下,特別是在windows和linux兩個系統間工作的人,總是會因為這個造成很多錯誤。

之前使用jekyll靜態檔案寫靜態部落格就是因為bom的問題搞了很久。。

可以google下“ bom編碼”,然後好好理解下。

當時解決的辦法:

用vim
fileformat=unix
然後儲存退出
:wq!


或者使用sed來處理下
 sed -i 's/\r//' filename

需要重定向到一個檔案中

重新執行shell,應該就可以了。

作者: orangleliu