檢測你正在使用的基於 systemd 的分發

此方法適用於現代版本的 Arch,CentOS,CoreOS,Debian,Fedora,Mageia,openSUSE,Red Hat Enterprise Linux,SUSE Linux Enterprise Server,Ubuntu 等。這種廣泛的適用性使其成為第一種方法的理想選擇,如果你還需要識別舊系統,則可以回退到其他方法。

看看/etc/os-release。具體來說,看看變數 NAMEVERSIONIDVERSION_IDPRETTY_NAME

在 Fedora 上,此檔案可能如下所示:

    NAME=Fedora
    VERSION="24 (Workstation Edition)"
    ID=fedora
    VERSION_ID=24
    PRETTY_NAME="Fedora 24 (Workstation Edition)"
    ANSI_COLOR="0;34"
    CPE_NAME="cpe:/o:fedoraproject:fedora:24"
    HOME_URL="https://fedoraproject.org/"
    BUG_REPORT_URL="https://bugzilla.redhat.com/"
    REDHAT_BUGZILLA_PRODUCT="Fedora"
    REDHAT_BUGZILLA_PRODUCT_VERSION=24
    REDHAT_SUPPORT_PRODUCT="Fedora"
    REDHAT_SUPPORT_PRODUCT_VERSION=24
    PRIVACY_POLICY_URL=https://fedoraproject.org/wiki/Legal:PrivacyPolicy
    VARIANT="Workstation Edition"
    VARIANT_ID=workstation

在 CentOS 上,此檔案可能如下所示:

    NAME="CentOS Linux"
    VERSION="7 (Core)"
    ID="centos"
    ID_LIKE="rhel fedora"
    VERSION_ID="7"
    PRETTY_NAME="CentOS Linux 7 (Core)"
    ANSI_COLOR="0;31"
    CPE_NAME="cpe:/o:centos:centos:7"
    HOME_URL="https://www.centos.org/"
    BUG_REPORT_URL="https://bugs.centos.org/"
    
    CENTOS_MANTISBT_PROJECT="CentOS-7"
    CENTOS_MANTISBT_PROJECT_VERSION="7"
    REDHAT_SUPPORT_PRODUCT="centos"
    REDHAT_SUPPORT_PRODUCT_VERSION="7"

該檔案記錄在 freedesktop 網站上 ; 原則上,它不是特定於系統的 - 但它將存在於所有基於 systemd 的發行版中。

從 bash shell 中,可以獲取/etc/os-release 檔案,然後直接使用各種變數,如下所示:

$ ( source /etc/os-release && echo "$PRETTY_NAME" )
Fedora 24 (Workstation Edition)