VM 和 SSH 中的 Windows Bash 与 Ubuntu

VM 和 SSH 中的 Windows Bash 与 Ubuntu

我已经寻找了一段时间,但我一直没能找出新的 Windows 10 版 Bash 和在 VM 中运行的 Ubuntu 中的 ssh(安装了 Windows 驱动器)之间有什么区别。

它是否与 Windows 有更多的集成,或者访问和安装的简易性仅仅是通过在 VM 中运行的 Ubuntu 安装?

答案1

其区别本质上在于操作系统级虚拟化和基于虚拟机管理程序的虚拟化之间的区别。

当您bash从 Windows 开始菜单启动时,您将获得一个文本窗口,可以访问完整的 Ubuntu 命令行环境,您可以从中安装任何用户空间 Ubuntu 包。

与传统 VM 不同,它无需启动或运行 Linux 内核,因此启动速度更快,运行更​​轻松。Ubuntu 原生二进制文件仅由 Windows 内核(确切地说是 Windows 内核的一个新子系统)执行。另一个区别是它没有开箱即用的图形集成。使用 VM,您可以访问虚拟硬件的文本和图形控制台的窗口(或全屏)表示,但使用 Windows bash,它更像是从 Windows 终端仿真器远程连接到服务器。如果您在X11Windows 上启动服务器,您仍然可以运行 Linux 图形应用程序。由于没有 Linux 内核,您无法使用 Linux 模块/驱动程序访问硬件,它将由 Windows 原生模块/驱动程序访问。这有很多影响,例如,目前不支持符号链接,并且存在长文件名和文件名大小写问题,没有 inotify。没有像真实机器或传统 VM 那样的启动顺序,这意味着启动时不会自动启动任何服务bash。它与 Docker 启动略有相似bash

最后,这项工作仍在进行中,因此还有很大的改进空间。您可能知道用户在该网站中报告最多的是什么https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windows

另请参阅常见问题解答:https://msdn.microsoft.com/en-us/commandline/wsl/faq

请注意,第一个用户请求“让我们从 Bash 启动 Windows 进程”是您无法从运行在 Windows 上的 Linux VM 上执行的操作。

答案2

这三种工具各有不同用途或目的。选择哪一种工具,部分取决于个人偏好,部分取决于正确或适当的工具选择。

我没有用过它,但从我读过的关于 Windows BASH 的资料来看,这是一个稍微孤立的 BASH shell 环境。它无法访问系统级信息或 API,例如 Powershell 可以访问。它才不是提供类似 UNIX命令环境,也不提供 SSH。但它可以像 BAT 文件一样运行程序和应用程序,但脚本是用 BASH 语法编写的。

Cygwin 是一个基于库的抽象,是(或多或少)完整的 UNIX 风格 POSIX 环境。它可以访问系统级信息和 API如果这样的界面已经写好了,而且很多人都写好了。感觉更像是 UNIX 风格的环境,但显然需要进行一些调整才能适应“windows 主义”。例如,要访问 Windows 驱动器(如 D),它是/cygdrive/d/。路径中的目录分隔符是/而不是\,访问网络驱动器是//host/share/path...我每天在工作中使用它,我发现它对我的 UNIX 风格思维非常有用。

在虚拟机中运行的 Linux 是完整的安装,并且(几乎)完全与主机系统隔离,除了网络、键盘/鼠标、内存等特定的定义点之外……

相关内容