我发现某些命令(例如ls
和pwd
)可以在Linux和Unix系统上使用。
- 是否所有Linux命令都可以在Unix系统中使用,并且所有Unix命令都可以在Linux中使用?
- 或者仅仅是所有Linux命令都可以在Unix上运行,但并非所有Unix命令都可以在Linux上运行。
- 还是所有Unix命令都可以在Linux上运行,但不是所有Linux命令都可以在Unix上运行?
- 还是有参考资料可以告诉我哪些命令可以在Linux和Unix上运行,而哪些地方都有自己的独特命令?
我发现某些命令(例如ls
和pwd
)可以在Linux和Unix系统上使用。
Answers:
丹尼尔·安德森(Daniel Andersson)对POSIX的评论才是真正的答案:有一个名为POSIX的标准,它在外壳命令和系统调用方面定义了类UNIX系统的核心。从理论上讲,如果您按照POSIX规范编写软件,则应该可以在任何UNIX,Linux,BSD等系统上进行编译和运行。
http://pubs.opengroup.org/onlinepubs/009695399/mindex.html将为您提供有关POSIX组成的明确答案,但这对于实际目的不是一个有用的答案。对于Linux系统和其他类似UNIX的系统之间的常见差异,其他人可能会有很好的命令参考。
一个特定的示例:Linux上的“ killall”杀死具有特定名称的所有进程。在Solaris上,它将关闭系统。重要的是不要使用错误的一个。
cat
一个cat
,记住玫瑰的任何其他名称仍应照样芳香。将您带到Windows盒中,了解Unix 不是什么。但是Linux当然是Unix。
如今,大多数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:它们不是完全相同的代码,但是它们在大多数情况下都应该完全相同。
ps
是我能想到的最令人讨厌的例子。不同系统(Linux,AIX和Solaris)上的不同开关。输出的格式也不同。尽管该命令的目的在所有系统上都是相同的。
您没有指定要谈论的UNIX(BSD,System V ...)。没有通用(UNIX)答案。每个UNIX变体都有其自己的自定义命令(例如Mac OS X),因此,即使在UNIX之间,也存在不同的命令。通常,旧命令(例如ls,pwd,cd,cp,mv,rm等)在所有UNIX版本(包括Linux)上通常都是相同的。