Actualmente, en el terminal, mi shell interactiva predeterminada es bash versión 4.4. El sistema operativo viene con la versión 3.2.
Si quiero ejecutar un script (por ejemplo, my_script.sh
) usando bash versión 4.4, puedo "sourcearlo" (source my_script.sh
) o escribirlo directamente en mi terminal. Sin embargo, en ambos casos, el script se ejecuta en mi shell actual. También puedo darle permisos de ejecución a un script y ejecutarlo como un comando, permitiendo que el shebang controle qué versión de bash utilizar.
Sin embargo, el comando bash
sigue utilizando la versión 3.2. Por ejemplo, si ejecuto bash my_script.sh
, el script se ejecutará en una nueva shell (lo cual quiero), pero se utilizará la versión antigua de bash (3.2). De la misma manera, si simplemente ejecuto bash
sin argumentos, se abrirá una nueva shell utilizando la versión 3.2 (recuerda, si abro una nueva ventana o pestaña en el terminal, utiliza mi shell predeterminada, bash v. 4.4. El problema aquí es lo que sucede cuando uso el comando bash
).
He agregado la ruta a bash 4.4 en mi máquina (/usr/local/bin/bash
) a mi variable PATH
en .bash_profile
, y no está siendo sobrescrita en otro lugar (echo $PATH
da el resultado esperado: la primera ruta es usr/local/bin/bash
). Esperaba que esto cambiara el comportamiento del comando bash
Puedo usar una solución temporal, configurando un alias (alias bash4='/usr/local/bin/bash'
), pero no necesito usar un alias para bash 3.2, o para versiones actualizadas de, por ejemplo, python o R.
¿Hay algo que me esté perdiendo? ¿Es la solución del alias la única opción aquí?
EDICIONES
en respuesta a los comentarios:
SHELL
es /usr/local/bin/bash
, lo cual no es sorprendente, ya que es mi shell de inicio predeterminada.
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
Todo mi PATH es un desastre, lo cual 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:/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:/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 path, había repetido inadvertidamente $PATH
en una línea de mi .bash_profile
, (PATH=$PATH::$PATH) causando duplicación no deseada
0 votos
¡Bienvenido a Ask Different :) Por favor comparte la salida o ejecución
type -a bash
yecho $SHELL
.0 votos
Por favor, publica la salida de
echo $PATH
. El bash por defecto se encuentra en/bin/bash
y apuesto a que está antes del camino hacia bash v.4.0 votos
@Alan nope. El único uso de "bash" en $PATH es /usr/local/bin/bash, aunque se repite muchas veces... editando...
0 votos
Me equivoqué. Bash se encuentra en
/bin
. Confírmalo escribiendowhich bash
. Pero aún necesitamos ver tu ruta.0 votos
@Allan ahh, sí,
/bin
está ahí varias veces, y entendí que debería permanecer allí. Puse la ruta a bash 4.4 al principio para resolver esto, sin embargo.0 votos
/bin
está ahí solo una vez. Tienes/usr/local/bin
que es otro directorio por completo.0 votos
@Allan
/bin
como una ruta completa está en realidad ahí 4 veces (una búsqueda de:/bin:
en la ruta que publiqué muestra 4 coincidencias). Esto es resultado de una duplicación no relacionada de PATH