Estoy intentando configurar un sistema para cambiar entre versiones de bash en una Mac. Tengo esto que funciona:
change_bash_version(){
if test "$1" == "3"; then
export PATH="$HOME/bash/versions/3.2.57:${PATH}"
elif test "$1" == "4"; then
export PATH="$HOME/bash/versions/4.4.18:${PATH}"
else
export PATH="$HOME/bash/versions/5.0:${PATH}"
fi
}
export -f change_bash_version
Intenté usar alias pero no se heredan. Mi pregunta es: ¿existe alguna alternativa a cambiar la RUTA para poner el ejecutable bash deseado al frente? No funciona muy fácilmente colocar un directorio completo en la RUTA si ese directorio tiene un montón de archivos extraños que no quiero que vea la RUTA.
La otra desventaja de esta técnica es tener que usar una función bash para cambiar de versión (a menos que alguien pueda pensar en una forma de usar una utilidad de línea de comando).
Intenté usar esto:
change_bash_version(){
bash(){
$HOME/bash/versions/4.4.18/bash "$@"
}
export -f bash; # error here
}
pero a bash no le gustó eso: decir "bash" no es una función
Respuesta1
Esto parece funcionar para mí con pruebas muy básicas:
change_bash_version(){
case $1 in
3) bash() { "$HOME/bash/versions/3.2.57/bash" "$@"; } ;;
4) bash() { "$HOME/bash/versions/4.4.18/bash" "$@"; } ;;
*) bash() { "$HOME/bash/versions/5.0/bash" "$@"; } ;;
esac
export -f bash
}