今天在windows下使用notepad++寫了個python腳本,傳到linux伺服器執行後提示:-bash: ./logger.py: usr/bin/python^M: bad interpreter: No such file or directory 1.原因分析 這是不同系統編碼格式引起 ...
今天在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