Actualmente, en la terminal, mi shell interactivo predeterminado es la versión 4.4 de bash. El sistema operativo se envía con 3.2.
Si quiero ejecutar una secuencia de comandos (por ejemplo, my_script.sh
) con la versión 4.4 de bash, puedo obtenerla ( source my_script.sh
) o escribirla directamente en mi terminal. Sin embargo, en cada caso el script se ejecuta en mi shell actual. También puedo dar permisos de ejecución a un script y ejecutarlo como un comando, permitiendo que shebang controle qué versión de bash usar.
Sin embargo, el comando bash
continúa usando la versión 3.2. Por ejemplo, si ejecuto bash my_script.sh
, el script se ejecutará en un nuevo shell (lo que quiero), pero se usará la versión anterior de bash (3.2). De forma similar, si ejecuto bash
sin argumentos, se abre un nuevo shell con la versión 3.2 (recordar, si abro una nueva ventana o pestaña en el terminal, usa mi shell predeterminado, bash v. 4.4. El problema aquí es ¿Qué sucede cuando uso el comando bash
?
Agregué la ruta de bash 4.4 en mi máquina ( /usr/local/bin/bash
) a mi variable PATH
en .bash_profile
, y no se está sobrescribiendo en otra parte ( echo $PATH
da el resultado esperado: la primera la ruta es usr/local/bin/bash
). Esperaba que esto cambiara el comportamiento del comando bash
Puedo usar una solución alternativa, configurando un alias ( alias bash4='/usr/local/bin/bash'
), pero no tengo que usar un alias para bash 3.2, o para versiones mejoradas de, por ejemplo, python o R.
¿Hay algo que me falta? ¿Es la solución alias la única opción aquí?
EDITS
en respuesta a los comentarios:
SHELL
es /usr/local/bin/bash
, lo cual no es sorprendente, ya que es mi shell de inicio de sesión predeterminado.
type -a bash
es interesante ...
bash is /bin/bash
bash is /usr/local/bin/bash
bash is /bin/bash
bash is /usr/local/bin/bash
bash is /bin/bash
bash is /usr/local/bin/bash
bash is /bin/bash
bash is /usr/local/bin/bash
Mi PATH completo es un desastre, que puede ser la fuente de este problema.
/usr/local/bin/bash:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/local/bin/bash:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Library/TeX/texbin:/opt/X11/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Library/TeX/texbin:/opt/X11/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Users/coltrane/Programming/Android_Development/sdk/platform-tools:/Library/Frameworks/R.framework/Resources/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/local/bin/bash:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Library/TeX/texbin:/opt/X11/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Library/TeX/texbin:/opt/X11/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Users/coltrane/Programming/Android_Development/sdk/platform-tools:/Library/Frameworks/R.framework/Resources/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Users/coltrane/Programming/Android_Development/sdk/platform-tools:/Library/Frameworks/R.framework/Resources/bin
problema no relacionado con mi ruta, repetí inadvertidamente $PATH
en una línea de mi .bash_profile
, (PATH = $ PATH :: $ PATH) causando duplicación no deseada