故障現象:
在Windows下我利用TortoiseGit将shell腳本檔案從遠端Gitlib庫克隆到本地後在Linux下腳本無法執行,運作腳本時出現如下錯誤提示:
/bin/sh: 0: Can't open
解決過程:
好好的腳本為啥突然就不能執行了,之前可是沒有問題的啊(注:我的電腦被重裝過,TortoiseGit也重新安裝了,和之前沒問題時的環境還是有點不一樣)。
我将出問題的腳本和之前沒問題的腳本(還好我有備份)通過Beyond Compare 3軟體比對發現有問題的shell腳本的檔案格式變成了Windows,而沒有問題的shell腳本的檔案格式為Unix,那這樣的話他們的行結束符就會有差異,這可能就是有問題的shell腳本不能執行的原因。我用notepad++将有問題的shell的檔案格式由Windows轉換為Unix,之後再運作,可以了。看來就是文本格式原因造成的。
shell腳本不能運作的原因算是找到了,但是為什麼使用TortoiseGit克隆遠端的源碼會将檔案的格式轉換了?難道與TortoiseGit的設定有關?果然,就是與TortoiseGit的設定有關,将檔案格式有Unix轉換為Windows的就是由下面紅色框中的選項決定的;

将此處的選項去掉後,我使用TortoiseGit從遠端克隆的shell腳本就能正常在Linux系統中運作了。
知識補充:
1.在三大OS下,其環境下的行結束符是如下所示,是以當Unix OS的文本文檔用Win OS來讀取時,就會發生問題,所有的文字都在同一行。
OS : 十六進制 -> ascii碼 -> 簡稱 -> 全稱/中文名稱
Mac OS: 0D -> \r -> CR -> Carriage Return / 回車(符)
Unix OS: 0A -> \n -> LF -> Line Feed / 換行(符)
Win OS: 0D 0A -> \r\n -> CR LF
2.使用notepad++檢視目前文本格式
Notepad++界面中,在右下角有檔案格式的描述:“Dos\Windows或Unix或Mac”
3.使用notepad++進行文本格式轉換
編輯->檔案格式轉換->,其中可以進行三種文本格式的轉換。