Windows Bash 和 Cygwin 之间有什么区别?

Mar*_*zel 70 windows-subsystem-for-linux

Windows Bash 和 Cygwin 之间有什么区别?

来自带有“Linux”Bash 的 Windows 的新更新是新的,但是与 Cygwin 有什么区别可能会让您选择一个?

Ric*_*ner 69

如果您想完全生活在 Windows 中并想使用 bash 脚本驱动/自动化 Windows 任务,Cygwin 是一个很好的工具。但是,Cygwin 无法运行未经修改的 Linux 二进制文件。

这就是 WSL 介入的地方:

适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 内核的一个新层,旨在提供与 Linux 内核 ABI 的高度兼容性。这允许原生的、未经修改的 Linux ELF64 二进制文件在 WSL 上运行。

这就是 WSL 如何运行真正的 Ubuntu 用户版发行版,以及您从 apt-get 下载的任何包,或从其他地方下载的 .deb 包,而无需任何更改。

WSL 的重点是使在 Windows 上工作的开发人员能够运行许多工具,并处理许多依赖于 Linux 二进制文件、功能、行为、文件系统布局、进程模型等的项目。

虽然 WSL 仍处于其实施的早期阶段,但我们正在努力提高系统调用实施的广度和深度,以稳步提高 WSL 运行更多工具集的能力,并支持数量迅速增长的 Ruby、Java、节点等包和项目。


更新:2017-09-07

自从编写上述内容以来,我们已经发布了 Windows 10 创意者更新,它极大地提高了 WSL 与您想要/需要运行的许多工具的兼容性。

开发也有增无减,在过去的几个月里,我们一直在运送 Win10 Insiders 版本,以便于 2017 年 10 月发布秋季创作者更新 (FCU)。

在 FCU 中,我们增加了并行安装和运行多个发行版的能力:Ubuntu、openSUSE 和 SLES 目前可用,Fedora 和其他发行版也在路上。WSL 现在还支持 USB 串行通信、USB 存储和网络共享的安装,以及对我们的系统调用的进一步改进,从而提高了与更多工具的兼容性。


更新:2019-08-22

自从第一次宣布和发布 WSL,然后通过商店添加对多个发行版的支持,并宣布 WSL v1.0 HTH 以来,这是非常忙碌的几年。

在 Build 2019 上,我们发布了新的 Windows 终端此处为终端会话视频)和WSL 2此处为 WSL 2 会话视频),它们引入了在 Windows 上运行 Linux 的全新方法。

有关更多详细信息和未来更新,请务必每两周访问一次 Windows 命令行博客,我们会在其中发布大量相关新闻

  • 我多年来一直是 cygwin 用户。WSL 是一个绝妙的想法,它大多运行良好……但是在这个阶段,它的文件访问速度很慢。我会说慢得令人望而却步。即使是使用 GIT 之类的中等规模的操作也需要 30 多秒,而在 Cygwin 上则为亚秒级。希望他们能解决这个问题。 (11认同)
  • 磁盘性能是一个已知问题:我们正在对 Win10 CU 进行一些性能改进,更多实质性改进将在 2017 年晚些时候推出。 (9认同)
  • 极好的。等不及了。这将是一个很棒的产品:-) (3认同)
  • @RichTurner 然后我将运行更新 :D (3认同)
  • @DamienSawyer 已经超过 6 个月了。您的速度投诉是否减少了,还是仍然相同? (2认同)
  • @WinEunuuchs2Unix - 我没有注意到/听说有任何改进。请注意,我并没有真正使用它,而是坚持使用 Cygwin(以及运行 bash 的 Docker 容器)。我认为,如果/当它有所改善时,科技媒体会发布公告,然后我会再试一次。 (2认同)

Win*_*nix 19

适用于 Linux 的 Windows 子系统

我已经在 Windows 10 下使用 WSL 大约几个月了。最后,我可以启动到 Windows 进行游戏,并且仍然可以访问 bash 提示符并运行 CLI 和许多 GUI 程序。有一些限制,例如没有熟悉的 Linux 内核虚拟目录。需要计划在双引导机器上的 Ubuntu 和 WSL 之间共享相同的 Bash 脚本。

有很多事情我希望看到改进,但我可以忍受它一年左右。

闭源

需要记住的一件事是,Microsoft 是一个封闭系统,您不会像在 Linux 上一样喜欢大量第三方编写更新。但是所有的事情都考虑到你买了一台新的笔记本电脑,无论如何它都配备了 Windows 10,所以你至少可以说它是“免费的”:)

Cygwin 由 Red Hat Linux 控制,Red Hat Linux 也不完全以免费赠送东西而闻名。他们的“免费”Linux 发行版 Fedora对某些人来说似乎是一个“试验场”

维护周期

Cygwin 有 15 年的更新。值得注意的是,同一个项目经理自 2003 年以来一直在位。有很多全职维护者和更多的志愿者贡献者。

WSL 每年春季和秋季提供两次重大更新。开发人员订阅列表中的用户可以使用每周次要更新。尽管 Microsoft 拥有将数千人投入 WSL 开发的资源,但您似乎可以用手指数出团队成员

速度问题

你会看到很多关于 WSL 速度的抱怨。例如,与 Ubuntu 16.04 相比,Windows 10 中的屏幕绘制时间要长很多倍,即您实际上可以看到光标在 Windows 10 中移动:

WSL bash 启动.gif

WSL Bash 启动画面绘制大约需要 5 秒钟。相比之下,Ubuntu 16.04 中相同的启动画面大约需要 1 1/2 秒:

Ubuntu 终端 splash.gif

Cygwin 对Bash有自己的速度抱怨


以下原帖供历史参考。

对于 Windows 10 Home,如果它是 32 位 Windows,则意味着它不会运行 64 位 Ubuntu/Windows 子系统,正如微软在这里告诉我们的:(win10 HOME BASIC 中的 windows Linux 子系统)。

在 Windows 上运行 Ubuntu 就像梦想成真,其对 Nvidia 的卓越游戏支持,但在你用完并购买新的(或使用过的)笔记本电脑之前,请确保它具有 Windows 10 64 位,而不是 32 位家庭版,如果你想在 Windows 下本地运行 Ubuntu/Linux 的东西。在 Microsoft 网站上,他们实际上将 Windows 周年版称为运行适用于 Linux 的 Windows 子系统的先决条件。


但是,如果您不想为 Windows 10 支付 200 美元以上,并且您有一台像我一样运行 Windows 8.1 64 位的旧笔记本电脑,并且您有一台像我一样运行 Windows Vista 64 位的更旧笔记本电脑,那么 Cygwin 是答案。

Cygwin 支持更多版本的 Windows作为其网站列表

Cygwin 有望在所有现代、已发布的 Windows 版本上运行。State 2016 年 1 月,这包括 Windows Vista、Windows Server 2008 和所有更高版本的 Windows,直到 Windows 10 和 Windows Server 2016。Cygwin 的 32 位版本也在已发布的 64 位版本的 Windows 上的 WOW64 32 位环境中运行,即 64位版本当然只在 64 位 Windows 上。

请记住,Cygwin 只能做底层操作系统支持的工作。因此,Cygwin 在不同版本的 Windows 上将表现不同,并表现出不同的限制。

  • 问题是 Windows 的 cygwin 和 bash 之间的区别是什么。您的回答中甚至没有提到 Cygwin。请澄清这如何回答问题。 (2认同)