¿Cuáles son las principales diferencias entre las líneas de comando de Linux y Mac OS X?

Estás haciendo una pregunta compleja …


Si desea obtener una comprensión detallada de las diferencias entre los diversos sistemas operativos basados ​​en UNIX y similares a UNIX, mi recomendación inmediata sería echar un vistazo al siguiente sitio web. Mapea y compara las diferencias de comando.

Rosetta Stone para Unix

Por ejemplo, para comparar Linux y MAC OS X, vaya a la esquina superior izquierda y seleccione Linux y MAC OS X y seleccione “dibujar tabla”. La tabla compara los diversos comandos de las dos variantes.


Las herramientas de línea de comandos en los sistemas operativos basados ​​en UNIX y similares a UNIX generalmente se dividen en uno de los tres campos; Las líneas de comando difieren ligeramente en parte debido a su fuente de origen.

  • AT&T UNIX
  • BSD
  • Linux y GNU

El gráfico adjunto de Wikipedia, (Historia de Unix) resume bastante bien la situación. Las principales diferencias se derivan del punto de origen de los sistemas operativos basados ​​en UNIX y similares a UNIX. Estas diferencias a nivel de línea de comandos se relacionan con cosas tales como la expansión de comandos y varias convenciones de nomenclatura de comandos y parámetros basados ​​en la versión fuente de UNIX o un sistema similar a UNIX …

MAC OS X
Si desea comprender cómo la línea de comandos de Mac OS X difiere de otros sistemas operativos basados ​​en UNIX y similares a UNIX, le recomendaría que lea los siguientes documentos de desarrollador de Apple:

  • Diseño de secuencias de comandos para la implementación multiplataforma
  • Notas de la versión de conformidad de Unix 03

los documentos anteriores le brindarán una comprensión bastante detallada de cómo MAC OS X difiere en términos de expansión de comandos, etc.

Por ejemplo, aunque las herramientas en OS X v10.5 y posteriores generalmente obedecen a la semántica de AT&T, esto no siempre es cierto. En particular, cuando se ejecutan desde scripts de instalación o elementos de inicio, obedecen la semántica BSD para la compatibilidad con versiones anteriores de scripts.

Apple, por ejemplo, ha realizado un esfuerzo significativo en OS X v.10.5 para admitir la Especificación Única de UNIX Versión 3 (SUSv3). Aunque Apple ha intentado minimizar el impacto de los cambios involucrados, algunos de ellos afectarán a los desarrolladores que trabajan con API y comandos de UNIX.

El kernel, las bibliotecas y las utilidades de OS X provienen de una serie de proyectos de código abierto, incluidos FreeBSD, GNU, NetBSD y OpenBSD. Aunque estos proyectos hacen un esfuerzo por seguir los estándares de la industria, ninguno de ellos tiene los recursos para participar en un proceso formal de certificación.


En realidad, este es un problema complejo y una pregunta para responder. No estaba completamente claro en qué nivel de detalle querías entrar en el tema, de ahí los breves consejos anteriores. Si está buscando más detalles sobre el puerto de línea de comandos o la operación de script multiplataforma, entonces mi recomendación es publicar como una pregunta separada.

Los siguientes libros pueden ser de su interés: este es un tema interesante pero complejo. Disfruta 🙂

Línea de comando

  • Amazon.com: Unix Power Tools: 100 eBook: Shelley Powers, Mike Loukides, Jerry Peek, Tim O’Reilly: Tienda Kindle

Programación UNIX

  • Amazon.com: Programación avanzada en el entorno UNIX (3a edición) (Addison-Wesley Professional Computing Series) eBook: W. Richard Stevens, Stephen A. Rago: Kindle Store
  • Amazon.com: la interfaz de programación de Linux: un manual de programación del sistema Linux y UNIX eBook: Michael Kerrisk: Kindle Store

Arquitectura Linux, BSD, MAX OS X

  • El arte del diseño del kernel de Linux: ilustrando el principio de diseño del sistema operativo y su implementación: Lixiang Yang: 9781466518032: Amazon.com: Libros
  • Amazon.com: Diseño e implementación del sistema operativo FreeBSD, The, 2 / e eBook: Marshall Kirk McKusick, George V. Neville-Neil, Robert NM Watson: Kindle Store
  • Mac OS X Internals: A Systems Approach 1, Amit Singh, eBook – Amazon.com (Fechado pero genial)

Mi favorito personal en 1997 al portar scripts de shell en varias versiones de UNIX y Windows se enumera a continuación (Por desgracia, muy anticuado ahora):

  • Programación de sistemas portátiles C y Unix (serie de procesamiento de señales Prentice-Hall): JE Lapin: 9780136864943: Amazon.com: Libros

Mac OS X es un sistema operativo certificado de Unix, por lo que su línea de comandos es totalmente compatible con los estándares de Unix y POSIX.
Los sistemas operativos GNU / Linux, que cumplen [parcialmente / en gran medida] con los estándares POSIX, tienen una sintaxis de línea de comandos más flexible.
En el contexto de esta pregunta, el estándar POSIX.2, que especifica los estándares para el intérprete de línea de comandos (shell) y las utilidades estándar, es la parte más interesante.
La buena noticia es que en las versiones modernas de Mac OS se usa bash como un emulador de terminal predeterminado, por lo que las diferencias se presentan principalmente en la invocación de utilidades y no en la sintaxis del núcleo del núcleo (la mayoría de los sistemas operativos GNU / Linux también usan bash como predeterminado).
En la mayoría de los casos, puede usar esta regla de mnemotecnia: en su mayoría, todas las líneas de comando que funcionan en Mac OS X (excepto estrictamente específicas de Mac OS X) también funcionarán en GNU / Linux, pero lo contrario no siempre es correcto.
También le sugiero que lea sobre los estándares POSIX y los sistemas operativos total / parcialmente compatibles, por ejemplo, en http://en.wikipedia.org/wiki/POSIX

Linux extiende POSIX, por lo que hay muchos comandos típicamente disponibles en Linux que no están disponibles en OS X a menos que los obtenga.

Aquí hay algunos:

  • gratis
  • dos2unix / unix2dos
  • setfacl / getfacl

Eso presenta un desafío bajo OS X … ¿cómo obtener estos otros programas?

Linux tiene gestión de paquetes. Para las variantes de RedHat, eso es yum y rpm. Para Ubuntu y sus amigos, el conjunto de herramientas ‘apt’: synaptic, apt-get, etc.

OS X no tiene un administrador de paquetes. Claro, hay algunos disponibles, MacPorts y Homebrew vienen a mi mente, pero no son parte de OS X por defecto.

Una vez que tenga un administrador de paquetes, puede extraer la herramienta idéntica o una herramienta similar al equivalente de Linux. Pero si está acostumbrado a Linux, espere encontrar un elemento tras otro a lo largo del tiempo de pequeñas diferencias en los programas disponibles, qué opciones de línea de comando usan, etc.

Una cosa buena que es lo mismo que Linux: ¡los programas ‘man’ y ‘apropos’ funcionan como se esperaba!