Windows下透過cmd和powershell存取Cygwin的Linux程序

Windows下透過cmd和powershell存取Cygwin的Linux程序

我使用 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 工具的任何地方使用它們。

參考 :

相關內容