エイリアスは継承されないので、PATH で実行可能ファイルをエクスポートする以外の方法はありますか?

エイリアスは継承されないので、PATH で実行可能ファイルをエクスポートする以外の方法はありますか?

Mac で bash バージョンを切り替えるシステムをセットアップしようとしています。動作するものは次のとおりです:

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

エイリアスを使用しようとしましたが、継承されません。質問ですが、PATH を変更して、必要な bash 実行ファイルを先頭に配置する代わりに何か方法がありますか? PATH に表示したくない無関係なファイルがそのディレクトリにたくさんある場合、ディレクトリ全体を PATH に配置するのは簡単ではありません。

この手法のもう 1 つの欠点は、バージョンを切り替えるために bash 関数を使用する必要があることです (誰かがコマンド ライン ユーティリティを使用する方法を考え出さない限り)。

これを使ってみました:

change_bash_version(){

  bash(){
    $HOME/bash/versions/4.4.18/bash "$@"
  }

  export -f bash;  # error here
}

しかし、bashはそれを好まなかった - 「bash」と言うのは関数ではない

答え1

これは非常に基本的なテストでは機能するようです:

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
}

関連情報