3

Что я обычно делаю, чтобы хотя бы получить представление о том, о какой ветке мы говорим, я пытаюсь запустить apt-get , pacman , yum и все другие распространенные менеджеры пакетов, которые я могу вспомнить из головы, но я ' Я уверен, что есть лучший способ, так: Есть ли простой способ, используя только оболочку, определить, в какой дистрибутив Linux вы только что вошли?

4 ответа4

3

Это зависит от дистрибутива.

Debian и родственники используют

     lsb_release -a
     cat /etc/lsb-release

либо один должен быть в порядке. Но, несмотря на то, что это связано с LSB (Linux Standard Base), оно есть не во всех дистрибутивах. Если вы не получили ответа от вышеуказанных команд, вам следует попробовать

      ls /etc/*release

а затем загляните внутрь того файла, который вы нашли. Вы должны быть осторожны с этим: в то время как RedHat имеет /etc /redhat-release, другие, например Arch Linux, имеют пустой файл /etc /arch-release, а тот, который содержит информацию, которую вы ищете, это /etc / ОС-релиз.

Итак, 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

Ubuntu:

$ 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 (debian-kernel@lists.debian.org) (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 (mockbuild@builder17.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-55)) #1 SMP Thu Dec 4 13:29:23 EST 2014
0

В современных 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)

Конечно, если вам нужно также идентифицировать старые версии или несистемные дистрибутивы, вы можете просто начать с этого подхода, если существует /etc/os-release , а если нет, вернитесь к lsb_release , /etc/redhat-release , пытаясь выяснить это из /proc/version или какой-то другой эвристики.

См. Определение имени и версии дистрибутива Linux в документации по переполнению стека.

0
uname -a

Должен сделать свое дело. Он отобразит системную информацию о дистрибутиве, в который вы вошли.

cat /etc/lsb-release 

Также должны отображаться имя и версия дистрибутива.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .