我通常会尝试运行apt-get
、pacman
以及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
还应显示发行版名称和版本。