如何识别正在使用的 Linux 发行版?

如何识别正在使用的 Linux 发行版?

我通常会尝试运行apt-getpacman以及yum我能记住的所有其他常见包管理器,以便至少了解我们正在谈论哪个分支,但我确信有更好的方法,所以:有没有一种简单的方法,仅使用 shell,就可以识别您刚刚登录到哪个 Linux 发行版?

答案1

这取决于发行版。

Debian 及其相关产品使用

     lsb_release -a
     cat /etc/lsb-release

两者都可以。但是,尽管这与 LSB(Linux 标准库)有关,但并非所有发行版都具有它。如果上述命令没有得到回复,你应该尝试

      ls /etc/*release

然后查看您找到的任何文件。您必须小心这一点:虽然 RedHat 确实有 /etc/redhat-release,但其他 Linux(如 Arch Linux)有一个空的/etc/arch-release 文件,其中确实包含您要查找的信息的是/etc/os-发布

所以,YMMV。

答案2

它可能不是万无一失的,但/proc/version至少可以给你一个大概的数据:

Redhat 衍生产品:

# cat /proc/version 
Linux version 2.6.18-92cp (builder@Lnx30BccCmp5) (gcc version 4.1.1 20061011 (Red Hat 4.1.1-30)) #1 SMP Wed Apr 8 17:12:19 IDT 2015

乌本图:

$ cat /proc/version
Linux version 3.13.0-24-generic (buildd@panlong) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014

Debian:

$ cat /proc/version 
Linux version 3.2.0-4-amd64 ([email protected]) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1 SMP Debian 3.2.65-1+deb7u1      

Centos:

# cat /proc/version 
Linux version 2.6.18-400.el5xen ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-55)) #1 SMP Thu Dec 4 13:29:23 EST 2014

答案3

在现代 Fedora 和 Debian(以及 Arch、CentOS、CoreOS、Mageia、openSUSE、Red Hat Enterprise Linux、SUSE Linux Enterprise Server、Ubuntu 和其他系统上)最简单的方法是查看/etc/os-release或运行hostnamectl status

在脚本中,你可以简单地执行

#!/bin/sh
source /etc/os-release
echo $PRETTY_NAME

例如:

$ source /etc/os-release
$ echo $PRETTY_NAME
Fedora 25 (Workstation Edition)

...

$ source /etc/os-release 
$ echo $PRETTY_NAME
Debian GNU/Linux 8 (jessie)

当然,如果您还需要识别旧版本或非 systemd 发行版,那么您可以简单地从这种方法开始(如果/etc/os-release存在),如果不存在,则继续寻找lsb_release,尝试从或其他启发式方法中/etc/redhat-release找出答案。/proc/version

检测 Linux 发行版名称和版本有关更多信息,请参阅 Stack Overflow 文档。

答案4

uname -a

应该可以解决问题。它将显示您登录的发行版的系统信息。

cat /etc/lsb-release 

还应显示发行版名称和版本。

相关内容