Linux 命令可以与 Unix 命令互换吗?

Ted*_*ong 21 linux unix

我发现一些命令,例如,lspwd,可以在 Linux 和 Unix 系统上使用。

  • 是不是所有的Linux命令都可以在Unix系统中使用,所有的Unix命令都可以在Linux中使用?
  • 或者只是所有的 Linux 命令都可以在 Unix 上运行,但并非所有的 Unix 命令都可以在 Linux 上运行。
  • 或者说所有的 Unix 命令都可以在 Linux 上运行,但不是所有的 Linux 命令都可以在 Unix 上运行?
  • 或者是否有参考资料向我展示哪些命令可以在 Linux 和 Unix 上运行,并且两者都有自己独特的命令?

pjc*_*c50 37

Daniel Andersson 关于 POSIX 的评论是这里的真正答案:有一个称为 POSIX 的标准,它定义了类 UNIX 系统的核心,包括 shell 命令和系统调用。理论上,如果您按照 POSIX 规范编写软件,则应该可以在任何 UNIX、Linux、BSD 等系统上编译和运行它。

http://pubs.opengroup.org/onlinepubs/009695399/mindex.html将为您提供关于什么构成 POSIX的明确答案,但这对于实际目的来说并不是一个有用的答案。其他人可能对 Linux 系统和其他类 UNIX 系统之间的常见差异有很好的命令参考。

一个具体的例子:Linux 上的“killall”会杀死具有特定名称的所有进程。在 Solaris 上,它会关闭系统。重要的是不要使用错误的。

  • @tchrist-如果您真的这么认为,请在 Mac OS X 上输入“sudo apt-get”,看看它能让您走多远。 (10认同)
  • @tchrist 当 Ted Wong 提到 Linux 时,他显然是在谈论也称为 GNU/Linux 的操作系统,它就在那里以 [“GNU 不是 Unix!”](http://en.wikipedia.org) 的名义说/wiki/GNU) ;) (7认同)
  • 实际上,据我所知,Mac OS X 是经过认证的 Unix——很少(如果有的话)Linux 变体实现的。显然,这只是一个非常基本标准的认证问题。 (4认同)
  • @戴夫巴。不要跛脚。称黑桃为黑桃,称“猫”为“猫”,并记住,任何其他名称的玫瑰仍然闻起来很香。嗨,请到 Windows 机器上学习 Unix 是什么 *** 不是 ***。但是Linux当然是Unix。 (4认同)
  • @tchrist **L** inux **I** s **N** ot **U** ni **X** (2认同)
  • @tchrist GNU `cat` 只是一个指向 `viscous-mountain-lion` 的符号链接 (2认同)

Jim*_*kie 18

今天的大多数 Linux 发行版都带有许多基本的 GNU 软件和 GNU 工具链。GNU 是一个重写 Unix 的自由副本的项目,该副本后来与 Linux 内核配对。当您ls在 Unix 机器上使用时,您使用的是原始的/原始的ls. 当您ls在 GNU/Linux 上使用时,您使用的ls是从头开始编写的 GNU ,与ls. 然而,并非所有 GNU 软件都与其 Unix 对应软件完全相同。现在 Unix 基本上已经变成了 BSD,GNU/Linux 发行版也可能包含该工具的 BSD 版本。例如,bsdtartar脑海里浮现。

tl; dr:它们不是完全相同的代码,但它们在大多数情况下是完全相同的。

  • 至于差异,`ps` 是我能想到的最烦人的例子。不同系统(Linux、AIX 和 Solaris)上的不同交换机。还有不同的输出格式。尽管该命令的目的在所有系统上都是相同的。 (2认同)

m0s*_*it0 5

您没有指定您在谈论哪种 UNIX(BSD、System V...)。没有通用的 (UNIX) 答案。每个 UNIX 变体都有自己的自定义命令(以 Mac OS X 为例),因此即使在 UNIX 之间也有不同的命令。通常旧的命令(如 ls、pwd、cd、cp、mv、rm...)在所有 UNIX 版本(包括 Linux)上往往是相同的。

  • [正式注册为 UNIX](http://en.wikipedia.org/wiki/Unix) (5认同)