今天在windows下使用notepad++寫了個python腳本,傳到linux服務器執行后提示:-bash: ./logger.py: usr/bin/python^M: bad interpreter: No such file or directory
1.原因分析
這是不同系統編碼格式引起的:在windows系統中編輯的logger.py文件可能有不可見字符,所以在Linux系統下執行會報以上異常信息。一般是因為windows行結尾和linux行結尾標識不同造成的,在window中行結尾符為'\r\n'表,而在linux中行結尾符為'\n',而^M 就是是ascii中的'\r'。
2.解決方法
1)在windows下轉換:
利用一些編輯器如UltraEdit或EditPlus等工具先將腳本編碼轉換,再放到Linux中執行。轉換方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可。
2)linux下直接替換:
sed -i 's/^M//g' filename ,意思是替換filename中的每一行中的^M為/(注意^M 在linux 下寫法 按^M 是回車換行符,輸入方法是按住CTRL+v,松開v,按m)
3)也可在Linux中轉換:
首先要確保文件有可執行權限 : chmod a+x filename ; 然后修改文件格式 :進入vi filename ,之后利用set ff(或者set fileformat)命令查看文件格式 ,為fileformat=dos 或 fileformat=unix ,再利用如下命令修改文件格式 : set ff=unix 或 :et fileformat=unix ;最后wq (存盤退出)
最后再執行文件 ./filename