Actualizar bash a la versión 4.0 en OSX

¿Es posible actualizar bash a la versión 4.0 en OSX Yosemite?

echo $BASH_VERSION 3.2.57(1)-release 

Este artículo y este hilo hacen reference a la misma pregunta, pero instalan un nuevo caparazón lado a lado con el anterior. ¿Hay alguna manera de actualizar directamente el viejo shell bash?

  • Compruebe si se está ejecutando un process, si no ejecutarlo de nuevo en la Terminal
  • Colores por tipo de file en terminal (ejecutando bash)
  • ¿Cómo exportar mi tema de terminal mac?
  • No se pueden instalar las herramientas de command-line de Xcode en Mountain Lion
  • ¿Cómo crear un alias bash en OS X?
  • ¿Cómo puedo instalar las herramientas de línea de command completamente desde la línea de command?
  • usuario root no puede crear un file en / usr / lib
  • ¿Es posible evitar que el dialog "El file ha sido cambiado" de TextEdit aparezca innecesariamente?
  • ¿Cómo se reposiciona manualmente las caras en la aplicación Mac OS X Yosemite Photos?
  • La memory total no se sum en el Monitor de actividad
  • ¿Cómo mantener dos Macs sincronizados?
  • La terminal en mi Mac ya no funciona después de instalar Python y Sublime Text
  • 3 Solutions collect form web for “Actualizar bash a la versión 4.0 en OSX”

    Apple no actualizará Bash, ya que la última versión tiene licencia bajo GPLv3, que Apple no puede usar. Sin embargo, han actualizado la mayoría de sus otros caparazones. ZSH por ejemplo está mayormente actualizado.

    Referencias

    Después de un poco de investigación, este parece ser el problema principal:

    Cuando las personas distribuyen productos de usuario que incluyen software bajo GPLv3, la sección 6 requiere que le proporcionen la información necesaria para modificar ese software. User Products es un término especialmente definido en la licencia; ejemplos de productos de usuario incluyen reproductores de música portátiles, grabadoras de video digital y sistemas de security para el hogar.

    Esto requeriría que, de lo contrario, el software de fuente cerrada, tenga sus partes GPL convertidas en modificables por el público, lo que obviamente sería un problema para Apple.

    ¿Es posible actualizar bash a la versión 4.0 en OSX Yosemite? Sí.

    1. Descargar / Instalar homebrew http://brew.sh/ ejecutando este command en la terminal.

       ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 
    2. Salga y vuelva a abrir su terminal. luego escribe

       brew install bash 
    3. Cambia el shell por defecto a través de la interfaz gráfica de usuario del terminal con la ruta literal de tu nuevo bash (EDIT: todavía no he encontrado una CLI que funcione)

    enter image description here

    ¿Es posible actualizar bash a la versión 4.0 de bash proporcionada por Apple en OSX Yosemite?

    EDITAR: No. No en la forma en que lo está haciendo la operación. Por ejemplo, actualice la installation actual reemplazándose a sí mismo. Se ha observado en otras respuestas que Apple no ha actualizado bash debido a problemas de licencia. Sin embargo, la descarga de una versión actualizada y separada de bash y su uso como su shell pnetworkingeterminado es la solución canónica para la mayoría de los intérpretes. Tomemos Python por ejemplo. No actualiza 2,7 a 3,5, descarga una versión por separado y cambia la pnetworkingeterminada.

    Como dijo @William en su respuesta, Apple no proporciona bash 4 debido a las restricciones de GPL. Sin embargo, puede instalar bash 4+ y también puede convertirlo en su shell pnetworkingeterminado (incluido para Terminal y iTerm2 ) haciendo lo siguiente.

    Primero instala la versión más nueva de bash. Hay varias forms de hacerlo, prefiero Homebrew.

    • Instale Homebrew como se describe en http://brew.sh .
    • Instala bash usando brew install bash .

    Bash ahora está disponible y el shell activo para la session actual. Puede encontrar dónde se encuentra ejecutando which bash . En mi caso, está en /usr/local/bin/bash . Este nuevo bash ahora se puede usar en scripts usando un Shebang con la nueva ruta bash al comienzo de los scripts. También puede usarlo para perfiles específicos en Terminal / iTerm2 siguiendo los pasos descritos en la respuesta de @usuario136952.

     #!/usr/local/bin/bash ...your script... 

    Supongo que esto es lo que quiere decir con "lado a lado" en su pregunta. Para hacer que bash sea el pnetworkingeterminado, debe hacer dos pasos más.

    Primero, agrega esa ruta bash a tu /etc/shells . Como se describe en / etc / shells , este file tiene la list de shells de inicio de session válidos. Antes de que el nuevo bash pueda ser el pnetworkingeterminado tiene que ser válido. Después de agregar la nueva ruta bash mi /etc/shells ve así:

     # List of acceptable shells for chpass(1). # Ftpd will not allow users to connect who are not using # one of these shells. /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh /usr/local/bin/bash 

    Finalmente podemos usar chsh para hacerlo el shell por defecto. Puede leer más sobre esto en Cambiar el shell en el terminal Mac OS X , pero el command real es muy sencillo.

     sudo chsh -s /usr/local/bin/bash 

    Ahora el nuevo bash es nuestro shell pnetworkingeterminado. Si abre Terminal o iTerm2 y ejecuta bash --version debería ver la nueva versión. Tenga en count la "Licencia GPLv3 +", que es la razón por la cual Apple no lo combina con macOS.

     $ bash --version GNU bash, version 4.4.12(1)-release (x86_64-apple-darwin16.6.0) Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> 
    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).