有关适用于 Linux 的 Windows 子系统的常见问题
普适性问题
适用于 Linux 的 Windows 子系统(WSL)是什么?
适用于 Linux 的 Windows 子系统是 Windows 操作系统的一项功能,它使您能够在 Windows 上直接运行 Linux 文件系统,以及 Linux 命令行工具和图形化应用程序,并与你传统的 Windows 桌面和应用程序一起使用。
如需更多详细信息,请参阅 关于页面。
适用于 Linux 的 Windows 子系统适用于哪些人?
适用于 Linux 的 Windows 子系统主要是为开发人员设计的,特别是 Web 开发人员、在开源项目上工作的人员,或者部署到 Linux 服务器 环境的人员。WSL 适用于喜欢使用 Bash、常见的 Linux 工具(sed
、awk
等)和 Linux 优先框架(Ruby、Python 等),但同时也喜欢使用 Windows 生产力工具的任何人。
我可以在 WSL 做些什么?
WSL 使你能够在 Bash shell 中运行你选择的 Linux 发行版(Ubuntu、Debian、OpenSUSE、Kali、Alpine 等)。通过1使用 Bash,你可以运行 Linux 的命令行工具和应用程序。例如,键入 lsb_release -a
并按 Enter 键;你将看到当前运行的 Linux 发行版的详细信息:
你还可以从 Linux Bash shell 内访问本地计算机的文件系统——你会发现本地驱动器挂载在 /mnt
文件夹下。例如,你的 C:
驱动器挂载在 /mnt/c
下:
你可以描述一下包含 WSL 的典型开发工作流程吗?
WSL 以开发人员为目标受众,旨在用作内部开发循环的一部分。比方说,Sam 正 在创建一个 CI/CD 管道(持续集成和持续交付),他希望先在本地机器(笔记本电脑)上进行测试,然后再部署到云上。Sam 可以启用 WSL(以及 WSL 2,以提高速度和性能),然后在本地(笔记本电脑上)使用真正的 Linux Ubuntu 实例,并使用他喜欢的任何 Bash 命令和工具。一旦开发管道在本地得到验证,Sam 就可以将该 CI/CD 管道推送到云端(如 Azure),方法是将其制作成一个 Docker 容器,并将该容器推送到一个云实例上,在该实例上运行的是一个可用于生产的 Ubuntu 虚拟机。
Bash 是什么?
Bash 是一种流行的基于文本的 shell 和命令语言。它是 Ubuntu 和其他 Linux 发行版中默认的 shell。用户在 shell 中键入命令以执行脚本和/或运行命令和工具,以完成许多任务。
WSL 是如何工作的?
查看 Windows Command Line 博客上的这篇详细介绍了底层技术的文章: 深入了解 WSL 如何允许 Windows 访问 Linux 文件。
WSL 与 Linux 虚拟机相比有什么优势?
与完整的虚拟机相比,WSL 需要的资源(CPU、内存和存储空间)更少。WSL 还允许你在运行 Windows 命令行、桌面和存储应用程序的同时运行 Linux 命令行工具和应用程序,并从 Linux 中访问 Windows 文件。这样,您就可以根据需要在同一组文件上使用 Windows 应用程序和 Linux 命令行工具。
为什么我会,比方说,在 Linux 而不是在 Windows 上使用 Ruby?
一些跨平台工具在构建时假定其运行环境与 Linux 类似。例如,有些工具假定它们能够访问很长的文件路径或存在特定的文件/文件夹。这通常会在 Windows 上造成问题,因为 Windows 的行为通常与 Linux 不同。
许多语言(如 Ruby 和 Node.js)经常被移植到 Windows 上,并在 Windows 上运行良好。然而,并非所有的 Ruby Gem 或 node/NPM 库所有者都会将其库移植到 Windows 上,而且许多库都有特定于 Linux 的依赖关系。这往往会导致使用此类工具和库构建的系统在 Windows 上出现构建错误,有时还会出现运行时错误或不需要的行为。
这些问题导致许多人要求 Microsoft 改进 Windows 的命令行工具,也促使我们与 Canonical 合作,使原生的 Bash 和 Linux 命令行工具能够在 Windows 上运行。