¿Por qué OS X tiene bash v3.2.57?

OS X viene con bash versión 3.2.57 en lugar de bash versión 4.3.39, que GNU enumera como la versión estable actual de bash .

¿Hay alguna forma de actualizar bash en Mac OS X?

Respuestas (1)

Tenga en cuenta la pregunta original sobre por qué Apple envió una versión anterior de bash y luego preguntó cómo actualizar. Esta es una respuesta al original. Si la pregunta es solo la última, entonces es un duplicado

Tendrías que preguntarle a Apple por qué. Sin embargo, me gustaría señalar que bash ahora tiene licencia GPLv3 y 3.2.57 es la última versión lanzada bajo GPL2.

Como bash está en /bin, no debe reemplazarlo directamente, ya que Apple puede actualizarlo o modificarlo en cualquier momento y ahora con SIP también es más difícil de cambiar. También los scripts en otros lugares pueden depender de esta versión.

Sin embargo, puede agregar bash desde GNU o desde un administrador de paquetes como Macports o Homebrew. Luego puede cambiar el perfil de Terminal.app para iniciar este shell en lugar de bash

Macports es

sudo port install bash

cerveza casera es

brew install bash

A partir del 6/14/16, la versión estable de bash es 4.3.42 y las actualizaciones suelen llegar rápidamente a través de ambos sistemas de puertos.

O puede cambiar su shell a otro que proporciona Apple, por ejemplo, zsh, que es más potente que bash (versión actualizada del lanzamiento de El Capitan) o ksh, que está actualizado. (o tcsh, que es un shell C pero también razonablemente actualizado)

¡Buena respuesta! Muy buena explicación. ¿Cómo puedo cambiar a zsh? ¿Hay algún buen manual de este caparazón? ¡Muchas gracias!
Vale la pena señalar que ksh y tcsh son shells bastante antiguos con muy pocos seguidores. Para aquellos que desean una alternativa bash, zsh y fish son más modernos y se recomiendan con bastante frecuencia. zsh es el shell predeterminado en macOS desde Catalina en 2019. Vea este gráfico sobre las tendencias de desbordamiento de pila para la popularidad de bash, zsh y ksh; los demás no tienen etiquetas.