为什么 Windows 和 Ubuntu 有相似的 shell 命令?

Sha*_*mer 14 command-line windows bash history-of-ubuntu

Ubuntu 有一个 bash(Bourne Again SHell),而 Windows 有它的专有外壳。根据我的研究,在 Windows/Ubuntu 中用于 shell 脚本的语言没有名称。它只是被称为 shell 脚本。

为什么Windows和Ubuntu的炮弹理解,如相同的命令:lsmkdirrmdirmount等?

是否有某种用于 shell 脚本的通用语言?如果是这样,请给我更多详细信息。

mur*_*uru 44

Windowscmd.exe不支持lsmount等,除非您自己安装了这些并将它们添加到%PATH%(通过 Cygwin、MinGW、基于 Unix 的应用程序 (SUA) 的子系统或其他东西)。Powershell可以。这是因为 Powershell 将这些作为标准 Powershell 命令的别名,以便 Unix 用户可以更舒适。请参阅Powershell中的兼容性别名列表。Windows 确实有rmdir, mkdir, 等,但是这些当然不支持您在 Ubuntu 上找到的相同选项语法。

在 Ubuntu 中,这些与 Bash 无关。它们都是外部命令。此类实用程序有标准。POSIX是最引人注目的(请参阅POSIX 授权的实用程序列表),Linux 标准库 (LSB)是另一个对 Linux 系统很重要的工具(主要基于 POSIX,但有一些附加功能)。Ubuntu 上的主要由GNU提供,GNU 实用程序通常具有比 POSIX 所需的基础更多的功能。

POSIX 还定义您提到的 shell 语言(与 中的有很大不同cmd.exe)。它源自Bourne shell的语法。Bash(现在您又知道Bourne指的是什么了),同样来自 GNU,也在顶部添加了一些特性,但在需要时可以以符合 POSIX 的方式运行。POSIX 语言是您期望使用sh. bash, ksh, ash, dash,zsh都使用语言,并进行了增强。csh处于自己的(噩梦)世界中,并tcsh增强了csh.

要了解更多信息,请查看 Unix 和类 Unix系统的历史。Unix 比 Windows 早十多年,这些实用程序首先出现在 Unix 中。

Windows 曾经是 POSIX 兼容的,因为美国政府要求政府机构使用的操作系统使用它(当时他们添加了 Unix 服务 (SFU),第一段中提到的 SUA 来自于该服务)。但该要求被取消,随后,SUA 被取消。

有关的:

(注意这些帖子的共同部分——它们都在Unix 和 Linux 上,并标记了历史——你可能会发现浏览该标签非常有用。)

  • AFAIK,`rmdir`(连同`mkdir` 和`cd / chdir`)是自MS-DOS 2.0 以来的原生`command.com` 内建程序(之前DOS 文件系统中没有层次结构) (3认同)