He leído mucho en Unix y Linux sobre BSD y GNU, etc. Pero todavía no entiendo cuáles son algunas diferencias reales y prácticas entre las tierras de usuario de BSD y GNU, a pesar de que a menudo se mencionan. ¿Alguien puede dar más detalles?
Al responder, explique completamente las conexiones históricas, teniendo en cuenta que no he estado vivo el tiempo suficiente como para haber experimentado un momento en que GNU / Linux no era el UNIX convencional (excepto OS X).
Respuestas:
El término "tierra de usuarios" puede referirse a muchas cosas en diferentes contextos, pero aquí interpreto "tierra de usuarios de GNU" frente a "tierra de usuarios de BSD" como el conjunto mínimo predeterminado de programas que vienen con una distribución.
La gran diferencia principal es que las dos tierras de usuario comienzan con un código fuente completamente diferente. Código fuente GNU cat Código fuente NetBSD cat . Solo a partir de ese programa simple en concepto, puede ver que el gato de NetBSD usa banderas de línea de comando tradicionales de una sola letra. Los programas GNU tienden a tener banderas de una sola letra, pero también las
--something-long
opciones de tipo. Los programas GNU también tienden a la compatibilidad POSIX.Esa diferencia en el código fuente le dará a los dos usuarios diferentes comportamientos en algunos casos.
También parece que NetBSD (al menos) usa su propia versión de libc, la biblioteca estándar de C. Aquí me estoy volviendo loco, pero libc y la vinculación dinámica están extrañamente interrelacionados. Nuevamente, un código fuente diferente conducirá a un comportamiento diferente.
Creo que, como usuario de shell, descubrirá que
ps
actuaría de manera diferente yls
podría proporcionarle un resultado ligeramente diferente al que está acostumbrado. Tendría que encontrar banderas de línea de comando equivalentes para algunos programas, si usa el--long-option
tipo de banderas de línea de comando.Históricamente, entiendo que BSD userland desciende más directamente de V6 y V7 Bell Labs Unix, a través del puerto de 32V al hardware VAX. GNU userland es más nuevo, escrito al menos en parte como reacción a los intentos de AT&T de mantener el código en secreto secreto a principios de los 80. Después de la desinversión del Sistema Bell de 1983, AT&T intentó "monetizar" Unix. Parte de eso fue licenciar el código fuente de una manera que evitó que la mayoría de las personas lo vieran. Richard Stallman y otros tuvieron problemas con esto. Su proyecto GNU existió específicamente para crear un sistema similar a Unix que se puede compartir libremente.
Mientras tanto, en 1993, AT&T demandó al sistema de la Universidad de California sobre los sistemas BSD ('B' es Berkeley, donde se encuentra la Universidad de California). La gente de Berkeley había reemplazado toda la fuente original de AT&T con un nuevo código, y ese nuevo código se convirtió en el antepasado de al menos el país de usuarios de NetBSD. AT&T y UCB llegaron a un acuerdo en 1994, revelado al público en 2004.
Naturalmente, al menos las ideas se polinizan de forma cruzada, por lo que hay al menos una similitud conceptual entre GNU y BSD, pero los casos de esquina definitivamente difieren.
fuente
sed
ahoga en líneas de entrada largas o segrep
produce una falla en los datos binarios.