bash - MSYS2 和 Cygwin 的区别

标签 bash cygwin msys2

<分区>

传统上,MSYS bash 被认为不如 Cygwin bash。 前者是 MinGW 中的一个辅助工具,用于运行 autoconf 脚本。 但是现在有了 MinGW-w64 和 MSYS2。后者带有像包管理器这样的甜美 pacman 和像 zsh 这样优雅的 shell,所以我想知道在仿真层是否还有差距。

虽然 MinGW* 应用程序是 Windows 原生可执行文件,但 MSYS2 软件需要一个 POSIX 仿真层,就像 Cygwin 一样。至少对于普通用户来说,很难发现两者之间的区别。

  • 两个仿真层之间的功能差异是什么(如果有的话)?
  • 哪种仿真速度更快(效率更高)?

最佳答案

传统上 MSYS bash 一直处于劣势,但主要是因为 Cygwin 仍在积极开发中,而 MSYS 则没有。 MSYS 从 Cygwin 版本 1.3.3 fork 并且从未重新同步,而 MSYS2 定期与 Cygwin 项目重新同步。

我们没有“像 pacman 这样的包管理器”,我们尽可能直接重新编译 Arch Linux 的 pacman 包管理器。

MSYS2 没有 cygwin.dll,但它有 msys-2.0.dll,它做同样的事情(还有更多)。具体来说,看起来像路径和 PATH env 的参数。 var 在运行 Windows 原生软件时转换为 Windows 窗体。

至于它是否更慢,我希望差别很小,但由于额外的转换工作,MSYS2 会稍微慢一些。话又说回来,与从 Cygwin 相比,您在 MSYS2(例如 MinGW-w64 编译器)中运行的 Windows native 软件可能会更多,因此这将使事情回到 MSYS2 的有利位置。

关于bash - MSYS2 和 Cygwin 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25751536/

相关文章:

c - 如何使用 MSYS2 和 Mingw-W64 让 GTK+ 3.0 信号处理程序在 Windows 10 上工作?

安卓NDK : Warning: There are no modules to build in this project

Node.js 找不到模块 - 干扰 Windows 上的 cygwin

windows - 如何编译mingw-w64-crt

linux - 递归查找所有不以注释开头的php文件

java - 从 Cygwin 设置 CLASSPATH

msys2 - 将 KDevelop 与 MSYS2 集成

swift - 为什么 Swift 不能从 CLI 运行?

bash - 在 Bash 中,获取文件会影响其中声明的关联数组。为什么?

Linux Bash 使用进度条遍历文件夹