2018年4月30日 星期一

執行 env python 卻顯示找不到檔案

修課的關係想說安裝個 Ubuntu 的虛擬機來練習 python,因為很不喜歡 vim 的編輯方式,所以開共享資料夾,在 Windows 端用習慣的編輯軟體編好檔案後存在共享資料夾內,再進入 Ubuntu 虛擬機中執行程式。

想像的很美好,但是事情並不太順利,老是出現找不到檔案的訊息:

#!/usr/bin/env: No such file or directory
$'\r': command not found

Oh No~~怎麼會這樣?明明檔案都在啊!!但是系統就是一直說找不到檔案。但是在命令列中輸入這行指令就能順利執行……

想了很久,想到一個可能性:『檔案是在 Windows 編輯的,換行字元格式不同,Linux 無法辨識吧?』

我用的編輯軟體是 notepad++,從『編輯 ==> 檔案格式轉換 ==> 轉換成 Unix 格式』把檔案存成 Unix 格式後再執行一次。現在錯誤訊息祇剩一行了,看起來有打中問題點:

#!/usr/bin/env: No such file or directory

又試了一陣子,發現是編碼的問題。我在 notepad++ 中預設編碼為 UTF-8,這在 Ubuntu 中會造成錯誤,將編碼改為 UTF-8 (檔首無 BOM) 或 ANSI 編碼,檔案就能正確執行了。

解決方式

總結一下,針對在 Windows 中編輯,又丟進 Linux 環境裡執行的檔案,如果要正確執行的話要先經過:

  1. 將檔案轉變為 Linux 格式
  2. 將檔案編碼轉換為 ANSI 或 UTF-8 (檔首無 BOM) 這兩種格式之一

這兩個步驟,之後就可以正確在 Linux 環境中執行檔案了。