Bashを使用してシステムがRHEL、CentOS、またはOracle Linuxであるかどうかを確認するには?

Bashを使用してシステムがRHEL、CentOS、またはOracle Linuxであるかどうかを確認するには?

CentOS / Oracle LinuxからRHEL 8に新しいシステムを移行するために必要なファイルを生成し、必要なパッケージをインストールするスクリプトを作成しています。スクリプトを実行しているシステムがCentOS 8またはOracle Linux 8を使用しているかどうかを検出し、RHEL 8を使用しているシステムがスクリプトを実行できないようにしたい(保護措置として)。 Bashを使ってこれを行うにはどうすればよいですか?システムがRHELであるかCentOSであるかを確認するには、どのファイルを確認し、どのコマンドを使用する必要がありますか?

答え1

~からhttps://get.docker.com

get_distribution() {
    lsb_dist=""
    # Every system that we officially support has /etc/os-release
    if [ -r /etc/os-release ]; then
        lsb_dist="$(. /etc/os-release && echo "$ID")"
    fi
    # Returning an empty string here should be alright since the
    # case statements don't act unless you provide an actual value
    echo "$lsb_dist"
}


    # perform some very rudimentary platform detection
    lsb_dist=$( get_distribution )
    lsb_dist="$(echo "$lsb_dist" | tr '[:upper:]' '[:lower:]')"

    case "$lsb_dist" in

        ubuntu)
            if command_exists lsb_release; then
                dist_version="$(lsb_release --codename | cut -f2)"
            fi
            if [ -z "$dist_version" ] && [ -r /etc/lsb-release ]; then
                dist_version="$(. /etc/lsb-release && echo "$DISTRIB_CODENAME")"
            fi
        ;;

        debian|raspbian)
            dist_version="$(sed 's/\/.*//' /etc/debian_version | sed 's/\..*//')"
            case "$dist_version" in
                11)
                    dist_version="bullseye"
                ;;
                10)
                    dist_version="buster"
                ;;
                9)
                    dist_version="stretch"
                ;;
                8)
                    dist_version="jessie"
                ;;
            esac
        ;;

        centos|rhel|sles)
            if [ -z "$dist_version" ] && [ -r /etc/os-release ]; then
                dist_version="$(. /etc/os-release && echo "$VERSION_ID")"
            fi
        ;;

        *)
            if command_exists lsb_release; then
                dist_version="$(lsb_release --release | cut -f2)"
            fi
            if [ -z "$dist_version" ] && [ -r /etc/os-release ]; then
                dist_version="$(. /etc/os-release && echo "$VERSION_ID")"
            fi
        ;;

    esac

関連情報