我发现某些命令(例如ls
和pwd
)可以在 Linux 和 Unix 系统上使用。
- 是不是所有Linux命令都可以在Unix系统上使用,所有Unix命令都可以在Linux上使用?
- 或者只是所有 Linux 命令都可以在 Unix 上运行,但并非所有 Unix 命令都可以在 Linux 上运行。
- 或者说所有 Unix 命令都可以在 Linux 上运行,但并非所有 Linux 命令都可以在 Unix 上运行?
- 或者有没有参考资料可以向我展示哪些命令可以在 Linux 和 Unix 上运行,以及两者都有自己独特的命令?
答案1
Daniel Andersson 对 POSIX 的评论才是真正的答案:有一个名为 POSIX 的标准,它定义了类 UNIX 系统的核心,包括 shell 命令和系统调用。理论上,如果您按照 POSIX 规范编写软件,那么应该可以在任何 UNIX、Linux、BSD 等系统上编译和运行它。
http://pubs.opengroup.org/onlinepubs/009695399/mindex.html会给你一个确定的回答 POSIX 的构成,但从实际目的来看,这不是一个有用的答案。其他人可能会有很好的命令参考,以了解 Linux 系统和其他类 UNIX 系统之间的常见差异。
举个具体的例子:Linux 上的“killall”会终止具有特定名称的所有进程。在 Solaris 上,它会关闭系统。切勿使用错误的名称。
答案2
如今,大多数 Linux 发行版都附带大量必备的 GNU 软件和 GNU 工具链。GNU 是一个重写 Unix 自由副本的项目,后来与 Linux 内核配对。当您ls
在 Unix 机器上使用时,您使用的是原始版本/原始版本ls
。当您ls
在 GNU/Linux 上使用时,您使用的是从头编写的 GNU,ls
与 相同ls
。但是,并非所有 GNU 软件都与其 Unix 对应版本完全相同。现在 Unix 基本上已经变成了 BSD,GNU/Linux 发行版也可能包含该工具的 BSD 版本。例如,bsdtar
和tar
浮现在脑海中。
tl;dr:它们不是完全相同的代码,但它们大部分是完全相同的。
答案3
您没有指定您谈论的是哪种 UNIX(BSD、System V……)。没有通用的(UNIX)答案。每个 UNIX 变体都有自己的自定义命令(以 Mac OS X 为例),因此即使在 UNIX 之间也有不同的命令。通常,旧命令(如 ls、pwd、cd、cp、mv、rm……)在所有 UNIX 版本(包括 Linux)上往往是相同的。
答案4
在 solaris 上,你只需要添加/usr/gnu/bin
到你的路径或与它交换/usr/bin
,你的命令集就会非常相似