Windows 7 中基于 UNIX 的应用程序子系统

Windows 7 中基于 UNIX 的应用程序子系统

注意到一个东西叫基于 UNIX 的应用程序子系统在里面打开和关闭 Windows 功能Windows 7 下的对话框。以前从未见过,看起来很有趣。它到底是什么?它是用来做什么的?我能用它做什么?

答案1

以前称为西弗吉尼亚大学或者UNIX 服务。它是 Windows 中的一个环境子系统,提供完全的 POSIX 兼容性和大量通常随 UNIX 系统提供的工具。

作为环境子系统这意味着它运行旁边Windows API,直接在内核之上。因此,它并不比本机 Windows API 本身模拟更多,因此性能比 cygwin 等更好。1

它主要用于直接在 Windows 上构建和运行 UNIX 应用程序,因此如果您最喜欢的 UNIX 程序没有附带 Windows 端口,您可以尝试在 SUA 中构建它:

Windows Services for Unix 和 Subsystem for Unix-based Applications 提供了头​​文件和库,使重新编译或移植 Unix 应用程序以在 Windows 上使用更加容易;它们不会使 Unix 二进制文件与 Windows 二进制文件兼容。最好将其视为一个独特的类 Unix 平台。

SFU 的当前版本包含:

  • 超过 350 个 Unix 实用程序,例如 vi、ksh、csh、ls、cat、awk、grep、kill 等。
  • GCC 3.3 编译器,包含和库(通过 MS libc)
  • Microsoft Visual Studio 命令行 C/C++ 编译器的类似 cc 的包装器
  • GDB 调试器
  • NFS 服务器和客户端
  • pcnfsd 守护进程
  • X11 工具和库
  • 使 NFS 挂载点显示为 Windows 共享的工具,反之亦然(网关服务)
  • 与 Active Directory (AD) 链接的 NIS 服务器功能
  • 一些Windows/Unix身份验证信息同步工具

SFU 不包含以下内容(但二进制文件可供单独安装):

  • bash、OpenSSH、sudo、CVS、ClamAV、bzip2、gmake、curl、emacs、Apache、XView、Ruby、Tcl、Python

(维基百科)

由于 SUA 并不试图成为 Linux 或 BSD,而只是普通的 POSIX,这也意味着许多依赖于特定平台的程序可能无法构建或运行。我想到的是采用 bash 而不是 sh 或 Linux 特定系统调用的 Shell 脚本。如今,很少有程序可以直接在任何符合 POSIX 的系统上运行。此外,所包含的 gcc 版本有些旧,这意味着它可能不支持您最新的 C99+ 优点。


1它仍然受到 Windows 特定的限制,例如进程启动时间缓慢,因此极端分叉仍然会非常缓慢,这就是为什么您需要等待很长时间才能./configure执行许多脚本或某些 makefile。

答案2

您可以使用 BSD 风格的软件包来安装/卸载软件。如果安装了 OpenSSH,则可以通过 SSH 访问 SUA。

相关内容