我已经使用 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 工具,它们被编译后可作为.exe
可执行文件在 Windows 上运行。
这是一 描述:
Cygwin 是一套开源工具,允许在类似 Linux 的界面中编译 Unix 或 Linux 应用程序并在 Microsoft Windows 操作系统 (OS) 上运行。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 工具的地方使用它们。
参考 :