问题描述
Windows Bash和Cygwin有什么区别?
来自Windows的带有”Linux” Bash的新更新是新的,但Cygwin有什么区别可能会让你选择一个而不是另一个?
最佳解决方法
如果你想完全在Windows中生活并希望用bash脚本驱动/自动化Windows任务,Cygwin是一个很棒的工具。但是,Cygwin无法运行未修改的Linux二进制文件。
这就是WSL介入的地方:
Windows子系统Linux(WSL)是Windows内核的一个新层,旨在提供与Linux内核ABI的高度兼容性。这允许本机的,未修改的Linux ELF64二进制文件在WSL上运行。
这就是WSL如何运行真正的Ubuntu user-land发行版,以及从apt-get下载的任何软件包,或来自其他地方的.deb软件包,无需任何更改。
WSL的目的是使在Windows上工作的开发人员能够运行许多工具,并在许多项目上工作,这些项目依赖于Linux二进制文件,功能,行为,文件系统布局,流程模型等。
虽然WSL还处于早期实施阶段,但我们正在努力改进系统调度实现的广度和深度,以稳步提高WSL运行更大工具集的能力,并支持快速增长的Ruby,Java,节点数量等包和项目。
更新:2017-09-07
自上面编写以来,我们已经发布了Windows 10 Creators Update,它可以提高WSL与您想要/需要运行的许多工具的兼容性。
开发工作也持续不减,我们在2017年10月的秋季创作更新(FCU)发货途中,在过去几个月内一直在运送Win10 Insiders版本。
在FCU中,我们正在添加安装和运行多个发行版side-by-side的功能:Ubuntu,openSUSE和SLES目前可用,Fedora和其他人正在进行中。 WSL现在还支持USB-serial通信,安装USB-storage和网络共享,以及对系统调用的进一步改进,从而提高与更多工具的兼容性。
HTH。
次佳解决方法
适用于Linux的Windows子系统
我已经在Windows 10下使用WSL大约几个月了。最后,我可以启动Windows进行游戏,仍然可以访问bash提示符并运行CLI和许多GUI程序。有一些限制,例如熟悉的Linux内核虚拟目录。需要规划在双引导计算机上在Ubuntu和WSL之间共享相同的Bash脚本。
有很多事情我希望看到改进,但我可以忍受它一年左右。
封闭源
有一点需要记住的是,微软是一个封闭的系统,你不会像在Linux上一样喜欢写第三方。但所有的事情都认为你买了一台新的笔记本电脑,它还配备了Windows 10,所以你可以说它至少是”free” 🙂
Cygwin是由Red Hat Linux控制的,它并不完全以免费赠送东西而闻名。他们的”free” Linux发行版Fedora看起来像是一些“testing ground”。
维护周期
Cygwin有15年的更新。值得注意的是,自2003年以来,同一个项目经理已经到位。有很多全职维护人员和更多的志愿者贡献者。
WSL每年春季和秋季两次提供重大更新。开发人员订阅列表上的人员可以每周进行一次小更新。虽然微软有资源让数千人参与WSL开发,但看起来你可以用手指计算team members。
速度问题
你会看到很多关于WSL速度的抱怨。例如,Windows 10与Ubuntu 16.04相比,屏幕绘制需要的时间要长很多倍,即您实际上可以在Windows 10中看到光标移动:
WSL Bash启动画面需要大约5秒钟来绘制。相比之下,Ubuntu 16.04中相同的启动画面大约是1 1/2秒:
Cygwin拥有自己的speed complaints with Bash份额。
以下原始帖子供历史参考。
这里的答案是一年,所以我认为有点更新。对于Windows 10 Home,如果它是32位Windows,则意味着它不会运行64位Ubuntu /Windows子系统,正如Microsoft在此处告诉我们的那样:(windows Linux subsystem in win10 HOME BASIC)。
这就像梦想成真在Windows上运行Ubuntu,为Nvidia提供卓越的游戏支持,但在您用完并购买新的(或二手)笔记本电脑之前,请确保它具有Windows 10 64位而不是32位家用版本你想在Windows下本地运行Ubuntu /Linux的东西。在Microsoft网站上,他们实际上将Windows周年纪念版称为运行Windows子系统Linux的先决条件。
但是,如果你不想为Windows 10支付200美元以上的费用,并且你有一台像我一样运行Windows 8.1 64位的旧笔记本电脑,并且你有一台比我更老的笔记本电脑运行Windows Vista 64位,那么Cygwin就是答案。
Cygwin支持更多版本的Windows as their website lists:
Cygwin can be expected to run on all modern, released versions of Windows. State January 2016 this includes Windows Vista, Windows Server 2008 and all later versions of Windows up to Windows 10 and Windows Server 2016. The 32 bit version of Cygwin also runs in the WOW64 32 bit environment on released 64 bit versions of Windows, the 64 bit version of course only on 64 bit Windows.
Keep in mind that Cygwin can only do as much as the underlying OS supports. Because of this, Cygwin will behave differently, and exhibit different limitations, on the various versions of Windows.