选择哪个-BSD或Unix样式的命令(如果可用)?


14

诸如此类的命令ps带有许多参数,特别是因为它们提供了使用选项,可以在Unix和BSD样式标志之间进行选择。我希望你能明白我的意思。

因此,当有这样的选项可用时,我应该选择哪个选项以在所有linux系统之间获得最大的兼容性?(例如,最大兼容性是优先事项之一)

我知道Unix风格非常明显,但是出于某种原因,BSD命令包含了更多可读信息(例如列标题,CPU列等)。当然,如果我错了,请指正我,但这就是我的感受。

Answers:


17

几乎所有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及其前辈的努力。)


即使这是一个很好的解释(和答案),也无济于事:我应该选择学习哪种风格?
Jarl

@Jarl:首先学习POSIX。随处可见。然后,了解您最常用的系统上正在使用的任何奇怪的变体。忽略其余的。
沃伦·杨

ps参数样式而言,哪种(BSD或Unix)是POSIX,那么呢?
加尔

@Jarl:请参阅规格。一般而言,由于POSIX受经济驱动,并且当时所有主要的商业Unix都是System V派生产品,因此POSIX比BSD拥有更多的SysVish。
沃伦·杨

0

如有疑问,请使用SysV语法。这已经被很多人同意,并且是事实上的标准。BSD的内容可以追溯到史前时期,或者是某些分歧分支的一部分(SysV旨在通过将所有不同的代码放在一个屋顶下来结束Unix战争)。


Linux的事实上的标准,而不是Solaris,* BSD,OSX等的标准
13年

当然,这是Solaris的标准(记住,这是一个发布的SysV)。至少IBM的AIX和HP-UX已遵守该原则。BSD是过去时代的坚持。
vonbrand 2013年

1
您对Solaris是SysV是正确的,这是我的错误。
chiggsy

3
尽管我质疑对BSD的贬低引用,但仍表示支持。继续以正确的方式做事不是一件坏事。
chiggsy 2013年

2
-1:首先,我认为您的意思是法律上的标准。要将SysV样式选项视为事实上的标准,您必须忽略几个存在的事实:FreeBSD,OpenBSD和NetBSD。您无法通过“史前”论据将它们淘汰。其次,Solaris 不是第一个SystemV。它可能SVR4的第一个商业版本,但是SVR1是为Vaxen和PDP-11开发的
沃伦·杨
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.