Ahora que MacOS Catalina se cambió a zsh, ¿puedo actualizar bash 3.2.57 con 5.0.3?

Entiendo el movimiento de Apple de bash a zsh, aunque realmente preferiría que no hubieran hecho el cambio.

Probé zsh y decidí que prefería quedarme con bash.

Entonces, dado que MacOS Catalina ya no usa /bin/bash, ¿voy a tener algún problema si lo reemplazo con la nueva versión? (3.2.57 con 5.0.3).

No habría pensado en hacer esto antes, porque habría sido muy posible que alguna parte del sistema operativo se basara en una función que había cambiado en las nuevas versiones.

Ahora, sin embargo, ese /bin/bash no se usa oficialmente, ¿podemos cambiarlo?

Si es así, sería un efecto secundario realmente positivo del cambio a zsh. Podemos mantener nuestras cuentas de usuario compatibles con nuestras cuentas de Linux, todas usando zsh, y mantener la última versión ejecutándose en todas nuestras máquinas, sin tener ningún peligro de conflicto con el sistema operativo.

Hay muchas cosas en la pregunta, ¿puede centrarse en una pregunta por publicación?
Habiendo dicho eso: /bin/bashno va a desaparecer, su cuenta actual, así como todos los scripts de shell, funcionarán como antes.
Debería encontrar respuestas sobre cómo cambiar shells en este sitio, la información sobre cambios no compatibles entre bash3 y bash5 debería estar disponible en los sitios habituales.
He actualizado la pregunta. Por favor, ¿podría volver a abrirla? No estoy buscando información sobre las diferencias, solo la simple pregunta de si está bien actualizar bash en Catalina
No se puede cambiar /bin/bashporque está protegido por SIP. Como han sugerido otros, puede agregar un nuevo basha /usr/local/bin/. Solo quería asegurarme de que estaba claro que no puedes eliminarlo /bin/bashincluso si quisieras (ni deberías hacerlo, ya que no sabes qué podría romperse).
Independientemente del deseo de usar Bash 5 en lugar de Bash 3, si simplemente desea usar Bash en lugar de Zsh, como era el valor predeterminado antes de Catalina, puede cambiar su shell predeterminado a Bash y suprimir el mensaje de desaprobación chsh -s /bin/bashde Bash .

Respuestas (3)

No puede (y no debe) cambiar/actualizar fácilmente /bin/bash. Sin embargo, puede instalar una versión más reciente de bashHomebrew y usar la información de Cómo usar bash como shell predeterminado para cambiar su shell de inicio de sesión.

Esto no romperá ningún script bash existente como se menciona #!/bin/bashen la primera línea.

Puede instalar el último bash a través de homebrew. Ya hay una guía sobre cómo instalarlo a través de homebrew.

Instalar cerveza a través de:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Después de instalar, obtenga la última versión de bash a través de brew.

Uso:

$ brew install bashinstala la última versión de bash.

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
  • Correrchsh -s /usr/local/bin/bash.

La ejecución bash -versionahora debería mostrar la última versión.

Elegiré una liendre aquí, Homebrew no actualizará /bin/bash, instalará una nueva versión en paralelo (también conocido como grado lateral) en /usr/local/bin, la ruta está en la lista, pero alguien viene aquí para aprender podría malinterpretar la oración "Puedes actualizar bash a través de homebrew"

Catalina ya no usa bash como shell predeterminado para cuentas nuevas . /bin/bashaún permanecerá allí, de modo que los scripts existentes que lo llamen seguirán funcionando sin modificaciones.

/bincontiene csh, ksh, sh, así como bashy zsh.

Por supuesto, puede instalar una versión más nueva de bash y modificar sus scripts existentes (o su entorno de shell) para usar eso en su lugar. Puede haber diferencias entre la versión anterior y la nueva que requieran una modificación del script.