
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에 저장하는 것은 쉽지 않습니다.
이 기술의 또 다른 단점은 버전을 전환하려면 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
}