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

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

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

为什么 Windows 和 Ubuntu shell 能理解相同的命令,例如:ls、、等等?mkdirrmdirmount

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

答案1

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

在 Ubuntu 中,这些与 Bash 无关。它们都是外部命令。此类实用程序有标准。POSIX是最值得注意的(见列表POSIX 强制要求的实用程序), 和Linux 标准库 (LSB)另一个对 Linux 系统很重要的东西(它主要基于 POSIX,但有一些补充)。Ubuntu 上的大多数都由GNU并且 GNU 实用程序通常具有比 POSIX 所需的基础更多的功能。

POSIX 还定义shell 语言你提到的(与cmd.exe)它源自Bourne 外壳的语法。Bash(现在你知道了再次重逢所指),同样来自 GNU,也添加了功能,但在需要时可以以符合 POSIX 的方式运行。POSIX 语言正是您所期望的shbash, ksh, ash, dash,zsh全部使用语言,并具有增强功能。csh处于自己的(噩梦)世界中,并tcsh具有增强功能csh

为了更深入地理解,可以回顾一下 Unix 的历史和类Unix系统。Unix 比 Windows 早出现十多年,这些实用程序最早出现在 Unix 中。

Windows 曾经是符合 POSIX 标准的,因为美国政府要求政府机构使用的操作系统必须符合 POSIX 标准(当时他们添加了Unix 服务 (SFU),由此产生了第一段中提到的SUA)。但该要求被废除,随后SUA也被取消。

有关的:

(请注意这些帖子的共同部分 - 它们都在Unix 和 Linux并标记历史- 您可能会发现浏览该标签非常有帮助。)

答案2

简单的:

Linux 是一个基于 UNIX 模型的系统,由 Dennis Ritchie 和 Ken Thompson 发明。

Windows/DOS 是 CP/M 系统的廉价仿制品,该系统在 20 世纪 70 年代流行于那些插在电视上的老式电脑上,而 CP/M 系统又是 20 世纪 60 年代末 / 70 年代初早期 UNIX 系统的廉价仿制品。

相关内容