Answers:
几乎所有Linux都使用原始核心Unix命令(例如)的GNU版本ps
,如您所注意到的,它同时支持BSD和AT&T样式选项。
由于您声明的目标只是Linux之间的兼容性,因此答案是“没有关系”。
嵌入式Linux和其他非常小的Linux变体通常使用BusyBox而不是GNU工具,但是在的情况下ps
,它实际上并不影响答案,因为BusyBox版本被精简,因此不能称为AT&Tish 或 BSDish。
随着时间的推移,其他Unixy系统减少了ps
兼容性差异。Mac OS X(从BSD Unix间接派生而来,其行为通常与BSD Unix仍然最相似)同时接受AT&Tish和BSDish ps
标志。
Solaris / OpenIndiana也是如此,尽管这并不奇怪,因为它具有混合的BSD和AT&T历史记录。
FreeBSD,OpenBSD和NetBSD仍然独占BSD风格。
Unix盒越旧,仅接受一种样式的标志的可能性就越大。您可以像现在一样在这样的盒子上打印差异:如果尚未安装GNU工具,请安装它们。
也就是说,仍然存在陷阱。ps
通常,不应将输出解析为需要可移植的脚本,例如,由于Unixy系统在可用的列数,操作系统愿意使非root用户可见的数据量等方面有所不同。
(顺便说一句,请注意,它是“ BSD vs. AT&T”,而不是“ BSD vs. Unix”。BSDUnix仍是UNIX®。BSDUnix 与原始AT&T分支有着直接的发展历史。共享也是双向的:AT&T及其继任者将BSD创新带回了其历史的各个阶段。随着时间的流逝,这种统一在一定程度上归功于The Open Group及其前辈的努力。)
ps
参数样式而言,哪种(BSD或Unix)是POSIX,那么呢?
如有疑问,请使用SysV语法。这已经被很多人同意,并且是事实上的标准。BSD的内容可以追溯到史前时期,或者是某些分歧分支的一部分(SysV旨在通过将所有不同的代码放在一个屋顶下来结束Unix战争)。