Esto se remonta a la historia algo tortuosa de Unix (Wikipedia tiene un diagrama simplificado , que está lejos de ser completo). En particular, durante un tiempo, hubo dos corrientes principales: el Sistema V desarrollado por AT&T y el BSD desarrollado en la Universidad de California, Berkeley. Esto fue a principios de la década de 1980, mucho antes de Linux (1991), y mucho menos de Ubuntu (2004). A menudo, estas dos corrientes tomaron decisiones diferentes, e incluso hoy encontrarás referencias ocasionales a las variantes o características de "Sistema V" y "BSD".
El ps
comando data de uno de los primeros lanzamientos de Unix (no estaba en la versión 1, la primera página de manual que puedo encontrar en línea es de la versión 5 (p.94) en 1974). En ese momento, ps
solo tenía algunas opciones, por ejemplo ps a
, mostraría todos los procesos en lugar de solo el usuario, y ps x
mostraría procesos sin terminal conectado. Notarás que las opciones no comienzan con -
: en ese momento, la convención de usar -
para las opciones no era casi sistemática como lo es hoy, era principalmente una cosa para los comandos que tomaban los nombres de los archivos como argumentos normales.
Con el tiempo, los diversos hilos de Unix se extendieron ps
con muchas más opciones. La variante BSD eligió conservar la sintaxis original, sin encabezado -
, a
y x
aún existe hoy. La variante del Sistema V eligió adoptar la convención sintáctica de -
for options, y usó letras diferentes (por ejemplo, ps -e
para mostrar todos los procesos). Oracle (anteriormente Sun) Solaris es un ejemplo de una variante del Sistema V (Solaris también envía un ps
ejecutable separado , en un directorio que no está en el predeterminado PATH
, para aplicaciones escritas con BSD en mente).
En el momento en que Linux entró en escena, las personas que lo usaban a menudo tenían experiencia previa de una variante de Unix u otra. Linux a veces hizo las cosas a la manera del Sistema V, a veces a la manera BSD, a veces a su manera, ya sea por consideraciones técnicas o por la experiencia y los gustos de quien implementó la función. El ps
comando de Linux comenzó con opciones similares a BSD, por ejemplo, ps ae
para mostrar todos los procesos e incluir variables de entorno en la lista. Con el tiempo (a fines de la década de 1990, no recuerdo exactamente cuándo), los autores de las ps
opciones agregadas de Linux para las personas que estaban acostumbradas al Sistema V. Por lo tanto, hoy en día ps ax
o ps -e
enumerarán todos los procesos en Linux, e incluso hay una variable de entorno ( PS_PERSONALITY
) hacerps
comportarse más como varias variantes de Unix antiguas de Unix, en aras de scripts antiguos y personas con hábitos establecidos.
A las personas que usaban varias variantes de Unix no les gustaba que tuvieran que modificar sus programas y sus hábitos al cambiar de una variante de Unix a otra. Así que hubo un esfuerzo por estandarizar un subconjunto de funcionalidades. Esto llevó al estándar POSIX (liderado por el IEEE ), que Ubuntu sigue en general. La primera edición cuyo alcance incluía el ps
comando salió en 1992; este no está disponible en línea, pero la edición de 1997 sí . Para el ps
comando, como en muchos otros casos, POSIX adoptó la forma del Sistema V de hacer las cosas.
La ps
sintaxis estándar del comando es compatible con System V y POSIX. Además, se puede decir que esa sintaxis es estándar porque se usa -
para introducir opciones por defecto. Algunas opciones existen solo en una de las dos sintaxis; Afortunadamente se pueden mezclar en la misma llamada.
En términos generales, "BSD" vs "Sistema V" no tiene ninguna implicación técnica. Se refiere a la historia: "BSD" es la elección que BSD hizo en la década de 1980 y, por lo tanto, "System V" es la elección que AT&T y sus socios (especialmente Sun) tomaron. "POSIX" es la elección que tomó el comité de estandarización de IEEE.
ps
optargs es estar al borde de un abismo que el hombre no debía saber.