如何識(shí)別Linux的發(fā)行版本

這個(gè)問題看起來好像很簡(jiǎn)單,其實(shí)深究起來還有點(diǎn)復(fù)雜

網(wǎng)上有人說可以用 uname -a 進(jìn)行查看,那我們來看看到底能不能使用這個(gè)作為判別依據(jù)

//各大發(fā)行版的 uname -a 輸出
CentOS8.2
Linux localhost.localdomain 4.18.0-193.el8.x86_64 #1 SMP Fri May 8 10:59:10 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Fedora34
Linux localhost-live 5.11.12-300.fc34.x86_64 #1 SMP Wed Apr 7 16:31:13 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Debian9.6
Linux 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux

OpenSUSE15.3
Linux localhost.localdomain 5.3.18-57-default #1 SMP Wed Apr 28 10:54:41 UTC 2021 (ba3c2e9) x86_64 x86_64 x86_64 GNU/Linux

Ubuntu20.04
Linux ubuntu 5.8.0-59-generic #66~20.04.1-Ubuntu SMP Thu Jun 17 11:14:10 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

除了 Debian 和 Ubuntu ,其他發(fā)行版并沒有輸出特別明顯的標(biāo)識(shí)。由此可見,uname -a 的輸出并不足以用來標(biāo)識(shí)各大發(fā)行版

那么還有其他的方式來識(shí)別嗎?有的,那就是 cat /proc/version ,我們來看看這個(gè)的輸出

CentOS8.2
Linux version 4.18.0-193.el8.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC)) #1 SMP Fri May 8 10:59:10 UTC 2020

Fedora34
Linux version 5.11.12-300.fc34.x86_64 (mockbuild@bkernel01.iad2.fedoraproject.org) (gcc (GCC) 11.0.1 20210324 (Red Hat 11.0.1-0), GNU ld version 2.35.1-41.fc34) #1 SMP Wed Apr 7 16:31:13 UTC 2021

Debian9.6
Linux version 4.9.0-8-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.130-2 (2018-10-27)

Ubuntu20.04
Linux version 5.8.0-59-generic (buildd@lcy01-amd64-022) (gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #66~20.04.1-Ubuntu SMP Thu Jun 17 11:14:10 UTC 2021

OpenSUSE15.3
Linux version 5.3.18-57-default (geeko@buildhost) (gcc version 7.5.0 (SUSE Linux)) #1 SMP Wed Apr 28 10:54:41 UTC 2021 (ba3c2e9)

可以看到,Red Hat系的發(fā)行版都會(huì)有 Red Hat 的標(biāo)識(shí),而Debian系的都會(huì)有對(duì)應(yīng)的發(fā)行版關(guān)鍵詞,那么如果 Red Hat系該怎么區(qū)分發(fā)行版呢?答案就是 cat /etc/redhat-release ,所有Red Hat系的發(fā)行版都有這個(gè)文件,并且還可以顯示版本號(hào)

所以整體邏輯就是,先使用 cat /proc/version 查看是Red Hat系還是Debian系。如果是Red Hat系,再使用 cat /etc/redhat-release 查看具體的發(fā)行版和版本號(hào)
下面是一個(gè)可以識(shí)別發(fā)行版的 shell 腳本

pkg=""
get_release_pkg(){
    if [[ $(cat /proc/version | grep -i "Red Hat") != "" ]]
    then
        pkg="yum"
    elif [[ $(cat /proc/version | grep -i "Ubuntu" ) != "" ]] ||  [[ $(cat /proc/version | grep -i "Debian" ) != "" ]]
    then
        pkg="apt"
    elif [[ $(cat /proc/version | grep -i "SUSE") != "" ]]
    then
        pkg="zypper"
    fi
}
get_release_pkg
echo ${pkg}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容