Dado que los alias no se heredan, ¿existe alguna alternativa a exportar el ejecutable en la RUTA?

Dado que los alias no se heredan, ¿existe alguna alternativa a exportar el ejecutable en la RUTA?

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
}

información relacionada