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
エイリアスを試しましたが、継承されません。私の質問は - 必要なbash実行可能ファイルを前に置くためにPATHを変更する別の方法はありますか? 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
}