Ответ
Для идентификации системы используйте комбинацию команд, проверяющих наличие специфичных для дистрибутива файлов.
1. Универсальный метод (работает на большинстве систем):
cat /etc/os-release
Этот файл стандартизирован и содержит четкие поля: NAME, VERSION, ID (например, ubuntu, centos, rhel).
2. Альтернативные команды для разных дистрибутивов:
# Для дистрибутивов на основе Debian/Ubuntu
lsb_release -a
# Для дистрибутивов на основе RedHat/CentOS/Fedora
cat /etc/redhat-release
# Проверка нескольких возможных файлов релиза
cat /etc/*-release
3. Определение версии ядра (не зависит от дистрибутива):
uname -sr
# Пример вывода: Linux 5.4.0-91-generic
4. Практический скрипт для определения системы:
#!/bin/bash
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$NAME
VER=$VERSION_ID
elif type lsb_release >/dev/null 2>&1; then
OS=$(lsb_release -si)
VER=$(lsb_release -sr)
elif [ -f /etc/redhat-release ]; then
OS=$(cat /etc/redhat-release | awk '{print $1}')
VER=$(cat /etc/redhat-release | awk '{print $4}')
else
OS=$(uname -s)
VER=$(uname -r)
fi
echo "Operating System: $OS"
echo "Version: $VER"