¿Cuál elegir? ¿Comandos de estilo BSD o Unix donde estén disponibles?

14

Los comandos como psvienen con muchos parámetros, especialmente porque le dan al uso una opción para elegir entre banderas de estilo Unix y BSD. Espero que entiendas mi punto aquí.

Entonces, cuando hay una opción disponible, ¿cuál debo elegir para una compatibilidad máxima en todos los sistemas Linux? (la compatibilidad máxima es una de las prioridades, por ejemplo)

Sé que el estilo Unix es bastante obvio, pero los comandos BSD por alguna razón incluyen información más legible (títulos de columna, por ejemplo, columna de CPU, etc.). Por supuesto, corrígeme si me equivoco, pero eso es lo que sentí.

soy yo
fuente

Respuestas:

17

Casi todos los Linux utilizan versiones de GNU de los comandos centrales originales de Unix como ps, que, como ha notado, admite las opciones de estilo BSD y AT&T.

Dado que su objetivo declarado es solo la compatibilidad entre Linux, eso significa que la respuesta es: "No importa".

Las variantes embebidas y otras muy pequeñas de Linux suelen usar BusyBox en lugar de las herramientas GNU, pero en el caso de psque realmente no afecte la respuesta, ya que la versión de BusyBox está tan reducida que no se puede llamar AT & Tish ni BSDish.

Con el tiempo, otros sistemas Unixy han reducido las psdiferencias de compatibilidad. Mac OS X, que se deriva indirectamente de BSD Unix y, en general, se comporta de manera más similar a BSD Unix, acepta tanto las marcas AT & Tish como BSDish ps.

Solaris / OpenIndiana también se comporta de esta manera, aunque esto es menos sorprendente porque tiene un historial mixto de BSD y AT&T.

FreeBSD, OpenBSD y NetBSD aún siguen el estilo BSD exclusivamente.

Cuanto más antigua sea una caja Unix, más probable es que acepte solo un estilo de banderas. Puede empapelar las diferencias en este cuadro de la misma manera que lo hacemos ahora: instale las herramientas GNU, si aún no se han instalado.

Dicho esto, todavía hay trampas. psla salida generalmente no debe analizarse en scripts que necesitan ser portátiles, por ejemplo, dado que los sistemas Unixy varían en las columnas disponibles, la cantidad de datos que el sistema operativo está dispuesto a hacer visibles para los usuarios no root, etc.

(Por cierto, tenga en cuenta que es "BSD vs. AT&T", no "BSD vs. Unix". BSD Unix sigue siendo UNIX®. BSD Unix comparte un historial de desarrollo directo con la sucursal original de AT&T. Ese intercambio también es en ambos sentidos. : AT&T y sus sucesores trajeron a casa las innovaciones de BSD en varios puntos de su historia. Esta unificación a lo largo del tiempo se debe en parte a los esfuerzos de The Open Group y sus predecesores).

Warren Young
fuente
Aunque esta es una gran explicación (y respuesta), no ayuda en la pregunta: ¿Qué estilo debo elegir para aprender?
Jarl
@Jarl: aprende POSIX primero. Eso está disponible en todas partes. Luego, aprenda cuáles son las variantes extrañas que se usan en los sistemas que usa más. Ignora el resto.
Warren Young
En el caso de los psestilos de argumento, ¿cuál (BSD o Unix) es POSIX, entonces?
Jarl
@Jarl: Ver las especificaciones . En términos generales, POSIX se inclina más SysVish que BSD, ya que POSIX fue impulsado económicamente, y todos los principales Unix comerciales de la época eran derivados del Sistema V.
Warren Young
0

En caso de duda, use la sintaxis SysV. Esto ha sido acordado por mucha gente, y es el estándar de facto. Las cosas de BSD datan de la prehistoria o son parte de una rama divergente (SysV fue un esfuerzo para poner fin a las guerras de Unix al poner todas las líneas dispares bajo un mismo techo).

vonbrand
fuente
Estándar de facto para Linux, no Solaris, * BSD, OSX, etc.
chiggsy
Claro que es el estándar para Solaris (ese fue el primer SysV que salió, recuerda). Ha sido respetado por AIX de IBM y HP-UX, al menos. Los BSD son un obstáculo de una época pasada.
vonbrand
1
Tienes razón acerca de que Solaris es SysV, mi error.
chiggsy
3
Votado, aunque cuestiono las referencias despectivas a BSD. No es malo seguir haciendo las cosas de la manera correcta.
chiggsy
2
-1: Primero, creo que te refieres al estándar de jure . Para considerar las opciones de estilo SysV como el estándar de facto , tendría que ignorar varios hechos de existencia: FreeBSD, OpenBSD y NetBSD. No puedes sacarlos de la existencia con ese argumento de "prehistoria". Segundo, Solaris no fue el primer Sistema V. Podría haber sido el primer envío comercial de SVR4 , pero SVR1 fue desarrollado para Vaxen y el PDP-11 .
Warren Young