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?

  • AppleScript vs. Bash script?
  • ¿Por qué `echo -n` no funciona en este script en el terminal mac?
  • ¿Cómo puedo abrir un file oculto en Text Wrangler?
  • Terminal lento en Sierra
  • ¿Hay una utilidad de command-line para mostrar una cadena o una image en la barra de estado en Mavericks?
  • Creación de scripts en Shell: select la carpeta según parte del nombre del file
  • Cómo cambiar la versión bash con homebrew
  • ¿Cómo descargo las carpetas a través de FTP en la Terminal?
  • ¿Por qué Perspective Warp puede causar que mi Mac se quede sin memory de la aplicación?
  • ¿Cómo se configura la aplicación pnetworkingeterminada para types de enlaces especiales (p. Ej., Ssh: //)?
  • Disminuir la memory de la GPU en MacBook Air
  • ¿Dónde almacena Time Machine su configuration?
  • 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).