天天看點

利用TortoiseGit将shell腳本檔案從遠端Gitlib庫克隆到本地後腳本無法執行

故障現象:

在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腳本檔案從遠端Gitlib庫克隆到本地後腳本無法執行

将此處的選項去掉後,我使用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++進行文本格式轉換

編輯->檔案格式轉換->,其中可以進行三種文本格式的轉換。

繼續閱讀