我使用 Cygwin 一段時間了。當我需要新的軟體包時,我打開安裝程式並選擇我需要的版本,安裝程式會處理其餘的內容。我注意到程式都下載到C:\cygwin64\bin
bin 資料夾內有許多 .exe 可執行檔。這包括 diff、find、grep、gzip、vi、vim、whatis、which、who、whoami 等。我所做的就是添加C:\cygwin64\bin
到用戶 PATH 變數中。
現在,我可以存取上述所有程序以及更多程序,這些程序是透過 Cygwin 以及 PowerShell 和 Windows 命令提示字元下載和使用的。我很困惑。所有這些程式都應該僅在 Cygwin 或任何 Windows 終端機中運行嗎?如果我可以在沒有 Cygwin bash 終端的情況下運行這些程序,那麼首先擁有 Cygwin 的意義何在?
答案1
Cygwin 是 Linux 工具的集合,這些工具被編譯為在 Windows 上作為.exe
可執行檔運行。
這是一 描述:
Cygwin 是一個開源工具集合,允許在 Microsoft Windows 作業系統 (OS) 上從類似 Linux 的介面中編譯和運行 Unix 或 Linux 應用程式。 Cygwin 為使用者在 Windows 環境中提供類似 Linux 的體驗。此功能可協助開發人員將應用程式從 Unix 或 Linux 遷移到基於 Windows 的系統,並更輕鬆地支援在 Windows 平台上執行的應用程式。
Cygwin 工具集的核心是 cygwin1.dll 動態連結程式庫 (DLL)。 DLL 用作提供可移植作業系統介面(POSIX)系統呼叫功能的模擬層。 Cygwin 發行版還擁有大量免費工具,包括大多數 GNU 和許多 Berkeley Software Distribution 工具,以及 X 伺服器和全套 X 應用程式。
實際上,Cygwin 是 Linux 原始碼和 Windows API 之間的一層。它提供了經過修改的 Linux 程式庫以使用 Windows 呼叫的函式庫,同時呈現熟悉的 Linux 語法。它有一個由 實作的執行時間層cygwin1.dll
,它是執行 Windows API 轉換的執行時間。
為了模擬統一的 Linux 環境,該 DLL 創建了一個共享記憶體記憶體段,供其所有工具及其自己的cygwin1.dll
.
Cygwin 的目的並不是像 WSL 那樣作為 Linux 虛擬環境,而是作為 Linux 開發人員在熟悉的環境中在 Windows 上移植和測試其 Linux 程式的工具。
Cygwin 支援 Linux 和 Windows 檔案名,這使得它的實用程式可以處理 Windows 資料夾和檔案。由於 Windows 和 Linux 之間存在一些差異,因此應謹慎使用。例如,Cygwin Linux 工具使用換行符作為行結束符,而 Windows 使用兩個字元。
所有 Cygwin 工具都是.exe
在 Windows 上執行的程序,並且可以在可以使用 Windows 工具的任何地方使用它們。
參考 :