1. 程式人生 > >在Windows下執行Linux Shell

在Windows下執行Linux Shell

越來越多的人選擇用Mac或者Linux環境進行跨平臺專案開發。但是仍然有大部分人習慣於在Windows環境下進行開發,畢竟Windows在各方面使用還是較為方便,特別像檔案版本管理(Git,SVN等)

在跨平臺下開發遊戲或軟體,就需要有一套方便的自動化工具。Windows下需要使用批處理,雖然有PowerShell加持,但這東西學了也不靠譜,只有一個平臺能用。大家還是習慣Linux Shell。連Mac平臺都可以用Shell,Windows上要做自動化指令碼就顯得非常尷尬。

我曾經在專案中使用go編寫了一套將配置轉為批處理和Linux Shell的工具。使用過程較為複雜,但是能跨平臺進行表格匯出和協議編譯等工作。

但是,這個工具還是需要對不同的平臺編寫多套模板進行程式碼生成,非常繁瑣。如果有一套跨平臺的Shell,編寫一次就可以跨平臺執行那該多好。

查閱資料後,一共有幾個方案:

  1. 使用Python作為自動化工具 這個方案其實就是使用python把批處理和Shell乾的事情用程式碼來解決。但前提是要重新學習Python,也需要一部分熟悉簡單的Python語法,人為學習成本較高,也比較費事。

  2. 自己編寫一套獨立的自動化工具 這個方案需要長時間的適配過程,差什麼指令補什麼指令,對專案進度有一定干擾。

  3. 自己編寫Linux Shell的直譯器 這個就更難了,要做到100%相容,基本不可能。

  1. 使用Cygwin和Mingw 需要一個微型執行時進行Linux Shell的解釋,msys大概是18M左右,可行性較高。

在研究Cygwin和Mingw如何整合的過程中,我誤操作點選了一個sh字尾的Linux Shell,這是我希望讓Mingw執行的Shell。結果呢,sh字尾的檔案居然能在Windows下執行。我馬上編寫了一系列的例子,發現幾乎完全相容常用的Shell指令。 經過研究,我發現Windows下能執行sh檔案是由Git自帶的msys2提供的。MSYS2 (Minimal SYStem 2, http://www.msys2.org/) 是一個MSYS的獨立改寫版本,主要用於 shell 命令列開發環境。同時它也是一個在Cygwin (POSIX 相容性層) 和 MinGW-w64(從"MinGW-生成")基礎上產生的,追求更好的互操作性的 Windows 軟體。

那就是說,那麼就可以在Windows下直接執行Linux Shell,只需要將檔案字尾命名為sh即可

問過周邊友人是否知道這一功能,都說知道,只是沒有廣播而已,害我研究很久……