92 votos

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

Soy nuevo en OS X. Estoy ejecutando OS X Lion en un MacBook Pro. ¿Es seguro actualizar el shell bash usando Homebrew:

$ brew install bash

Si es seguro, ¿cómo puedo hacer que sea la instancia por defecto del shell que ejecuto a través de Terminal?

Gracias.

2 votos

Esta cuestión se ha convertido de repente en algo muy relevante, ver Shellshock

0 votos

Sí. 10 c h a r a s

115voto

TraFoO Puntos 11

Binarios en /{,usr/}{,s}bin/ por lo general no deben ser sustituidos por otros archivos. Otros programas esperan que sean las versiones que vienen con OS X, y son reemplazados por las actualizaciones del sistema operativo.

Después de correr brew install bash , puedes cambiar el shell por defecto de forma segura:

  • Añadiendo /usr/local/bin/bash a /etc/shells
  • Ejecutar chsh -s /usr/local/bin/bash .

Normalmente no hay que cambiar la configuración en Terminal o iTerm 2. Ambos abren por defecto nuevos Windows con un shell de inicio de sesión del shell por defecto.

El shell por defecto también se puede cambiar desde las Preferencias del Sistema o con dscl, pero las tres opciones sólo modifican /var/db/dslocal/nodes/Default/users/$USER.plist .

0 votos

Parece que ha funcionado, y si experimento algún problema debería ser fácil de revertir. Gracias.

0 votos

No sabía que existía esa página de opciones avanzadas. ¡Qué bien!

3 votos

La parte de la edición /etc/shells para incluir el bash instalado en brew es necesario. De lo contrario (al menos en mi máquina) Terminal se negará a iniciar.

7voto

davr Puntos 3334

Podría estar equivocado aquí, pero hasta donde yo sé brew instalaría su propia instancia de bash ya que el brebaje funciona bajo /usr/local/bin mientras que el sistema por defecto funciona bajo /bin (y /usr/bin ).

Sobre la Terminal, puedes hacer que los shells se abran con tu propio comando personalizado. Vaya a Preferencias > Inicio y seleccione Las conchas se abren con: Comando (ruta completa) . Simplemente escriba la ruta a su nuevo bash ¡y vuala!

Espero que te sirva de ayuda.

BTW: ¡Seguridad! ¡El mejor consejo en estas situaciones!

0 votos

Oye, ¿sabes qué?, esta respuesta funciona realmente como un encanto

2voto

jplindstrom Puntos 563

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

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

Luego crea un enlace simbólico al ejecutable de bash que Homebrew descargó. 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

3 votos

La desventaja de poner un nuevo bash para la versión del sistema es que cualquier actualización del SO puede borrar tu shell preferido. Presumiblemente el OP quiere usar nuevas características que podrían romperse si el SO instala una versión de bash "más nueva que el viejo SO" pero "más vieja que la personalizada". Es mejor cambiar la ruta por defecto o cambiar la variable shell del usuario.

0 votos

Bueno, podrías crear un nuevo simlink ya que no sobrescribiría la versión de bash en tu directorio usr/local. pero tienes razón, la forma de Daniel es probablemente mejor

0 votos

Ooh - edita tu respuesta por favor para poner eso primero (y mantén la idea original si lo prefieres como segunda alternativa - me gusta mucho más y me encantaría tener la oportunidad de invertir mi voto :-)

0voto

Gianluca Casati Puntos 101

Creo que es seguro si sólo lanza

brew install bash

y luego agregarlo como su shell por defecto

chsh -s /usr/local/bin/bash

ya que sólo está modificando su usuario actual. Sin embargo, me he dado cuenta de que mi usuario por defecto ~/.profile es

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

por lo que es necesario actualizarlo. Lo he cambiado por

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

0 votos

Ver otras respuestas para saber por qué chsh no es suficiente. Además, su fragmento de perfil actualizado es idéntico al original

0 votos

@patrix: gracias por señalarlo, he actualizado el segundo fragmento. Estaría bien que brew install bash no requeriría ninguna otra acción. Con el perfil actualizado que he compartido, no lo hace. Espero que esto pueda ayudar a otros.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X