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?

  • Bash Tab-Completion para commands específicos de OSX
  • mount está agregando un indicador de cuarentena, lo que provoca: / bin / bash: bad intérprete: operación no permitida, pero no los sospechosos habituales
  • iotop en High Sierra
  • Creación de scripts en Shell: select la carpeta según parte del nombre del file
  • Mac preguntando la contraseña después del cd en la terminal
  • Cambiar el color de salida del terminal (en Mac) para que sea diferente del color del text typescript
  • Mostrar siempre las teclas de function en la tira de control al usar la terminal
  • No se pueden cerrar las tabs de los browseres con un clic medio a less que el browser tenga foco
  • ¿Por qué hay un process web activo incluso si Safari no está abierto?
  • ¿Qué alternativas a OpenSSL tengo que calcular un hash SHA-256?
  • ¿Qué significa Purgeable en Almacenamiento en Acerca de esta sección de Mac?
  • Transferencia de disco duro a SSD - 2007 MacBook y Lion
  • 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).