Bash en sí será casi igual. Habrá algunas pequeñas diferencias, pero ninguna de ellas afectará la portabilidad de sus scripts.
El principal problema es que los coreutils de MacOS están basados en FreeBSD, mientras que las utilidades a las que estás acostumbrado son muy probablemente del proyecto GNU. Los coreutils de FreeBSD no siempre son compatibles con los coreutils de GNU. Existen diferencias de rendimiento y comportamiento entre las versiones GNU y FreeBSD de sed , grep , ps y otras utilidades .
Puede instalar los coreutils de GNU pero tienen g-
prefijos (por ejemplo, gcat
for cat
). No es una buena idea reemplazar los coreutils de MacOS con los coreutils de GNU.
ps
tiene diferentes indicadores, como lo hacegrep
). Me golpeé la cabeza contra la pared un par de veces tratando de entender por qué mi script Ubuntu no estaba produciendo la misma salida en mi Mac.Si es importante,
bash
en Mac OS X Mountain Lion sigue siendo la versión 3.2. La mayoría de las distribuciones de Linux en estos días se envían con 4.x, por lo que se perderán las características de la versión 4. En la actualidad, la versión 4.2.45 está disponible en Homebrew como solución alternativa. No sé qué versión hay en Mavericks, no estoy seguro de que alguien que lo sepa pueda decir todavía.Como lo mencionaron otros,
bash
es lo mismobash
(aparte de las versiones ya mencionadas) pero Mac OS X usa un (en su mayoría) tierra de usuario BSD. Muchas de las utilidades del sistema estándar tienen opciones ligeramente diferentes o se comportan de manera ligeramente diferente. Desafortunadamente, son demasiado numerosos para enumerarlos aquí.fuente
Instale homebrew (un administrador de paquetes) y luego instale las versiones gnu de algunas utilidades básicas:
Después de cada instalación, mostrará los pasos que puede seguir para que simplemente pueda llamar en
date
lugar de,gdate
por ejemplo, para que pueda seguir usando sus scripts de bash de Linux sin ninguna modificación.Felicitaciones, acaba de resolver el 99% de sus problemas de secuencias de comandos multiplataforma.
fuente
Una cosa que puede ser frustrante al venir de Linux a una Mac es que no hay
/proc
un sistema de pseudoarchivos. Esto ha roto algunos de mis scripts de Linux, y puede ser complicado encontrar formas adecuadas de obtener la misma información que encuentra enproc
su script de bash de Mac.fuente
Soy un usuario 'principalmente Linux, Mac ocasional' y encuentro que:
bash,
~/.bashrc
y~/.bash_aliases
sobre todo funcionan igual.Un problema que encontré fue que uno de los comandos para cambiar el indicador de color no funcionaba en la Mac. De esa y otras experiencias he aprendido a mantener una ventana de terminal abierta e iniciada sesión al configurar mi
.bashrc
archivo. Eso fue lo que puedo probar 'nueva ventana' y encontrar cualquier error en el que todavía está conectado.fuente