¿Es seguro actualizar Bash a través de Homebrew?

Soy nuevo en OS X. Estoy ejecutando OS X Lion en una MacBook Pro. ¿Es seguro actualizar bash shell usando Homebrew?

$ brew install bash

Si es seguro, ¿cómo lo convierto en la instancia predeterminada del shell que ejecuto a través de la Terminal?

¡Gracias!

Esta pregunta de repente se ha vuelto extremadamente relevante, ver Shellshock
Sí. 10 caracteres

Respuestas (4)

Los archivos binarios en /{,usr/}{,s}bin/normalmente no deben reemplazarse con otros archivos. Otros programas esperan que sean las versiones que venían con OS X y son reemplazadas por actualizaciones del sistema operativo.

Después de ejecutar brew install bash, puede cambiar el shell predeterminado de forma segura:

  • agregando /usr/local/bin/basha/etc/shells
  • corriendo chsh -s /usr/local/bin/bash_

La configuración en Terminal o iTerm 2 normalmente no tiene que cambiarse. Ambos por defecto abren nuevas ventanas con un shell de inicio de sesión del shell predeterminado.

El shell predeterminado también se puede cambiar desde Preferencias del sistema o con dscl, pero las tres opciones solo se modifican /var/db/dslocal/nodes/Default/users/$USER.plist.

Parece que funcionó, y si tengo algún problema, ¡debería ser fácil de revertir! ¡Gracias!
No sabía que la página de opciones avanzadas estaba allí. ¡Dulce!
Se requiere un poco sobre la edición /etc/shellspara incluir el bash instalado en brew. De lo contrario (al menos en mi máquina), la Terminal se negará a iniciarse.
El tercer comando (csh -s) parece que ya no es necesario en Mavericks 10.9.2.
Solo tenía que hacerlo brew install bashpara que esto funcionara. (es decir, no tuvo que modificar /etc/shells)

Podría estar equivocado aquí, pero hasta donde yo sé brew, instalaría su propia instancia de bash, ya que brew funciona bajo /usr/local/binmientras que los valores predeterminados del sistema funcionan bajo /bin(y /usr/bin).

Acerca de Terminal, puede hacer que los shells se abran con su propio comando personalizado. Vaya a Preferencias > Inicio y seleccione Shells abiertos con: Comando (ruta completa) . ¡ Simplemente escriba la ruta a su nuevo bashy vuala!

¡Espero eso ayude!

Por cierto: ¡Copia de seguridad! ¡El mejor consejo en estas situaciones!

oye, sabes qué, esta respuesta realmente funciona a las mil maravillas

Bueno, antes de hacer nada, haga una copia de seguridad de su archivo actual (por supuesto, pero siempre merece ser dicho)

sudo cp /bin/bash /bin/bash.3.2.bk

Luego cree un enlace simbólico al ejecutable bash que descargó Homebrew. Creo que estará en /usr/local/Cellar, así

sudo ln -s /usr/local/Cellar/bash/4.2.10/bin/bash /bin/bash

Ahora /bin/bash apunta al archivo en su directorio usr/local

La desventaja de agregar un nuevo bash para la versión del sistema es que cualquier actualización del sistema operativo puede borrar su shell preferido. Presumiblemente, el OP quiere usar nuevas funciones que podrían romperse si el sistema operativo instala una versión de bash "más nueva que el sistema operativo anterior" pero "más antigua que la personalizada". Es mejor cambiar la ruta predeterminada o cambiar la variable de shell del usuario.
bueno, podrías simplemente crear un nuevo simlink ya que no sobrescribiría la versión de bash en tu directorio usr/local. pero tienes razón, la manera de Daniel es probablemente mejor
Ooh, edite su respuesta para poner eso primero (y mantenga la idea original si lo prefiere como una segunda alternativa; me gusta mucho más y me encantaría tener la oportunidad de revertir mi voto :-)
hmm, bueno, eso /es/ lo que dije, pero edité para tratar de aclarar un poco mejor qué hace cada paso. Sin embargo, todavía creo que la respuesta mejor calificada es probablemente mejor :)
Esta parece una forma bastante peligrosa de cambiar el shell del sistema.
¿por qué? se puede revertir en cualquier momento.
Si hace esto, realmente debería apuntar a /usr/local/opt/bash/bin/bash independiente de la versión en lugar de la ruta Cellar versionada.

Creo que es seguro si solo lanzas

brew install bash

y luego agréguelo como su shell predeterminado

chsh -s /usr/local/bin/bash

ya que solo está modificando su usuario actual. Sin embargo, noté que mi ~/.profile predeterminado es

if [ "/bin/bash" == $BASH ]; then
    source ~/.bashrc
fi

por lo que necesita ser actualizado. lo cambié a

if [ "bash" == $(basename $BASH) ]; then
        source ~/.bashrc
fi
Vea otras respuestas de por qué chshsolo no es suficiente. También si su fragmento de .profile actualizado se ve idéntico al original
@patrix: gracias por señalarlo, actualicé el segundo fragmento. Sería bueno si brew install bashno requiriera ninguna otra acción. Con el perfil actualizado que compartí, no lo hace. Espero que esto pueda ayudar a otros.