Windows Bash和Cygwin有什么区别?


65

Windows Bash和Cygwin有什么区别?

Windows中使用“ Linux” Bash进行的新更新是新的,但是Cygwin有哪些与众不同之处,可能使您选择一个与另一个不一样?


1
我想Windows bash可以更好地集成并且可以得到Microsoft的更好支持。
Panther

2
我认为这个问题是话题,因为Windows Bash是Canonical支持的产品。它可能不是主题而是观点,而是支持。
Panther

Answers:


65

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

这就是WSL介入的地方:

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

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

WSL的目的是使在Windows上工作的开发人员能够运行许多工具,并可以在许多项目上工作,这取决于Linux二进制文件,功能,行为,文件系统布局,过程模型等。

虽然WSL尚处于实施初期,但我们仍在努力提高sy​​scall实施的广度和深度,以稳步提高WSL运行更多工具的能力,并支持数量迅速增长的Ruby,Java,节点等软件包和项目。


更新时间:2017-09-07

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

开发工作仍在继续,并且在过去的几个月中一直在交付Win10 Insiders版本,并于2017年10月交付Fall Creators Update(FCU)。

在FCU中,我们增加了并排安装和运行多个发行版的功能:Ubuntu,openSUSE和SLES当前可用,而Fedora和其他版本也正在使用。WSL现在还支持USB串行通信,以及USB存储和网络共享的安装,以及对我们的syscall的进一步改进,从而改进了与更多工具的兼容性。


更新时间:2019-08-22

自从宣布并发布WSL,然后通过商店添加对多个发行版的支持,以及宣布WSL v1.0 HTH以来,已经有两年了。

在Build 2019上,我们宣布了新的Windows Terminal此处为Terminal会话视频)和WSL 2此处为WSL 2会话视频),它们介绍了一种在Windows上运行Linux的全新方法。

有关更多详细信息和将来的更新,请确保每隔两周访问Windows命令行博客,我们在其中发布许多相关新闻。


9
我多年来一直是cygwin用户。WSL是一个绝妙的主意,几乎可以很好地运行...但是,在此阶段,它的文件访问速度非常慢。我会说太慢了。用GIT之类的工具进行中等规模的操作大约需要30秒钟以上的时间,而在Cygwin上要不到1秒。希望他们能解决这个问题。
Damien Sawyer

9
磁盘性能是一个已知问题:我们正在为Win10 CU进行一些性能改进,2017
Rich Turner

3
太棒了 等不及了。这将是一个很好的产品:-)
Damien Sawyer

2
@DamienSawyer已经过去6个月了。您的速度抱怨有所减轻还是仍然一样?
WinEunuuchs2Unix

3
@RichTurner然后我将运行更新:D
Martijn van Wezel

15

Windows Linux子系统

我已经在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 startup.gif

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

Ubuntu终端splash.gif

Cygwin对Bash也有自己的速度抱怨


下面的原始文章供历史参考。

答案是一岁,所以我认为需要一点更新。对于Windows 10 Home,如果是32位Windows,则表示它不会运行Microsoft告诉我们的64位Ubuntu / Windows子系统:(win10 HOME BASIC中的Windows Linux子系统)。

在Windows上运行Ubuntu并提供对Nvidia的出色游戏支持,这就像实现梦想一样,但是在用完并购买新的(或二手的)笔记本电脑之前,请确保它具有Windows 10 64位而不是32位家庭版。您想在Windows下本地运行Ubuntu / Linux。在Microsoft网站上,他们实际上将Windows Anniversary版本称为运行Windows Subsystem for Linux的先决条件。


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

Cygwin 在其网站列表中支持更多版本的Windows :

Cygwin有望在所有现代发行版Windows上运行。2016年1月状态包括Windows Vista,Windows Server 2008以及Windows 10和Windows Server 2016之前的所有更高版本的Windows。Cygwin的32位版本还可以在WOW64 32位环境中的64位版本Windows(64位)上运行。当然,仅在64位Windows上才可以使用bit版本。

请记住,Cygwin只能完成基础操作系统支持的工作。因此,Cygwin在各种版本的Windows上将表现不同,并表现出不同的限制。


2
问题是cygwin和bash for Windows之间有什么区别。您的回答中甚至都没有提到Cygwin。请说明这如何回答问题。
塞斯(Seth)

@Seth我指出了WSL如何特定于版本,而Cygwin可以在所有受支持的WIndows版本上运行。感谢您指出我的疏忽。
WinEunuuchs2Unix

1
我们已经非常清楚地知道,WSL需要64位Windows,并且在每个Windows 10 SKU中都可用,但当前的LTSB除外-WSL将添加到下一个LTSB版本中。WSL也将包含在2017
Rich Turner

@RichTurner您的网站清楚地阐明了它。我不清楚(不是您的错)的原因是供应商为什么出售配备Nvidia 1050 GPU的i7四核7700和Windows 10家庭版的12 GB系统RAM。有人删除了原始链接,但这里是。他们没有说明它是32位的。您是说每个Windows 10是64位吗?
WinEunuuchs2Unix

1
它作为游戏PC出售。由于大多数游戏玩家不需要Win10 Pro中的其他功能,因此选择Home可以节省客户购买他们可能不需要的东西的费用。Windows 10确实也为想要的人提供32位变体,但是如果有人出售具有4GB以上RAM的计算机并安装了32位OS,我会感到惊讶,因为它无法运行所运行的OS和应用程序访问大于4GB的任何内容。
Rich Turner
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.