¿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 se refieren a la misma pregunta, pero instalan un nuevo shell junto con el anterior. ¿Hay alguna manera de actualizar directamente el viejo shell bash?
macos
terminal
bash
command-line
sluijs
fuente
fuente
Respuestas:
Apple no actualizará Bash, porque la última versión tiene licencia bajo GPLv3, que Apple no puede usar. Sin embargo, han actualizado la mayoría de sus otros proyectiles. ZSH por ejemplo está mayormente actualizado.
Referencias
Después de un poco de investigación, este parece ser el problema principal:
Esto requeriría que el software de código cerrado se modificara por el público, lo que obviamente sería un problema para Apple.
fuente
bash
. La cláusula de "Tivoización" podría explicar por québash
no se puede actualizar, por ejemplo, en un Apple TV, pero no realmente en una Mac de escritorio. Además, las "porciones de GPL" ya tendrían que ser modificables por el público; v3 no cambiaría eso. Me gustaría creer que el patentes cláusula de GPL v3 sería suficiente para disuadir a Apple de código GPL v3 tocar.¿Es posible actualizar bash a la versión 4.0 en OSX Yosemite? Si.
Descargue / instale homebrew http://brew.sh/ ejecutando este comando en la terminal.
Salga y vuelva a abrir su terminal. luego escribe
Cambie el shell predeterminado a través de la interfaz gráfica de usuario del terminal con la ruta literal de su nuevo bash (EDITAR: todavía tengo que encontrar una forma CLI que funcione)
¿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 el operador está preguntando. Por ejemplo, actualice la instalación actual reemplazándose. Se ha observado en otras respuestas que Apple no ha actualizado bash debido a problemas de licencia. Sin embargo, descargar una versión actualizada y separada de bash y usarlo como su shell predeterminado es la solución canónica para la mayoría de los intérpretes. Tome python por ejemplo. No actualiza 2.7 a 3.5, descarga una versión separada y cambia su configuración predeterminada.
fuente
sudo chpass -s /usr/local/bin/bash
. Nota: es mejor señalar el enlace simbólico de/usr/local/bin/
esa manera Brew puede manejar las actualizaciones sin tener que cambiar su entorno cada vez.sudo bash -c 'echo /usr/local/bin/bash >> /etc/shells'
luegochsh -s /usr/local/bin/bash
establecerá el shell predeterminado para la terminalComo @William dijo en su respuesta, Apple no proporciona bash 4 debido a restricciones de GPL. Sin embargo, puede instalar bash 4+ y también puede convertirlo en su shell predeterminado (incluso para Terminal e iTerm2 ) haciendo lo siguiente.
Instalar Bash 4 a través de Homebrew
Primero instale la versión más reciente de bash. Hay varias formas de hacerlo, prefiero Homebrew.
brew install bash
.Bash 4 ahora está disponible en su RUTA (asumiendo que Homebrew bin está en su camino). Sin embargo, aún no es su shell predeterminado. Puede encontrar dónde se encuentra al ejecutar
which bash
. En mi caso es a las/usr/local/bin/bash
.Usando Bash 4
Como está en su RUTA, puede iniciar una sesión de Bash 4 con solo
bash
o se puede usar en scripts utilizando un Shebang .Por ejemplo, esto usará una instancia de bash específica.
Esto usará el primer golpe en la RUTA.
También puede establecer la ruta bash para perfiles específicos en Terminal / iTerm2 utilizando los pasos descritos en la respuesta de @ user136952.
Hacer que Bash 4 sea el predeterminado
Como se mencionó anteriormente, después de instalar Bash 4 todavía no es el shell predeterminado. Para que bash sea el valor predeterminado, debe realizar dos pasos más.
Primero, agregue la ruta Bash 4 a su
/etc/shells
archivo para que sea un shell de inicio de sesión permitido. Como se describe en / etc / shells , este archivo tiene la lista de shells de inicio de sesión válidos. Después de agregar la nueva ruta de bash, mi/etc/shells
aspecto es el siguiente:A continuación, usamos chsh para convertirlo en su shell predeterminado. Entonces, cualquier sesión para ese usuario usará ese shell. Puede leer más sobre esto en Change the Shell en Mac OS X Terminal , pero el comando real es muy sencillo.
Ahora el nuevo bash es nuestro shell de inicio de sesión predeterminado. Si abre Terminal o iTerm2 y ejecuta
bash --version
, debería ver la nueva versión. Tenga en cuenta la "Licencia GPLv3 +", por lo que Apple no la incluye con macOS.fuente
sudo chpass -s /usr/local/bin/bash
cambia mi shell solo para root / sudo . Para cambiar mi inicio de sesión habitual, debo ejecutar el comando sinsudo
. Esto podría ser una cosa de Active Directory; No estoy seguro.#!/usr/local/bin/bash
shebang, busca usar#!/usr/bin/env bash
( explicación ). Esto ejecutará el script con cualquier versión de bash accesible por el entorno que está iniciando el script, es decir, lo que sea quewhich bash
regrese. Es una solución más portátil que usar rutas específicas. No podemos esperar que otros usuarios instalen bash a través de homebrew.Puedes instalar otra versión de Bash sin homebrew
Y siga los pasos aquí: https://gist.github.com/samnang/1759336
Descargue e instale la versión de bash que desee Reemplace XX (en bash-XX) con la versión que desee, por ejemplo, 4.4
Es posible que desee agregar un alias si desea que el comando bash lo use. Colocar en su ~ / .bash_profile
fuente
La instalación en paralelo con una actualización de su shell (a través de chsh o la GUI) fallará para los scripts. Las secuencias de comandos suelen usarse
env bash
, lo que vuelve a la versión bash de OS X. Entonces, lo que desea puede no ser la actualización completa de bash, sino una instalación en paralelo que siempre devuelve la versión más reciente de bash (es decir, incluso cuandoenv
se invoca).Entonces, para manejar esto:
1) instale bash a través de Homebrew, como los otros comentaristas han publicado
2) configure su shell de inicio de sesión en esta nueva versión (a través de la GUI o el comando chsh como otros han publicado)
3) establezca
/usr/local/bin
(o la ruta a la nueva versión de bash) por delante de/bin
su variable $ PATH, agregando esto a su~/.bash_profile
:export PATH=/usr/local/bin:$PATH
fuente
.bash_profile
todos modos, por lo que solo afectaría algo que se ejecuta directamente en un terminal de todos modos.2019: tan simple como en esta publicación
luego tabula una nueva terminal, ¡disfruta!
fuente