我正在嘗試設定一個系統來在 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 上並不容易。
這種技術的另一個缺點是必須使用 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
}