Для тестирования систем Debian вы можете проверить, /etc/debian_version
существует ли :
if [ -f "/etc/debian_version" ]; then
# do stuff
fi
В него должен быть включен Debian и системы на его основе (включая Ubuntu и его производные), хотя некоторые могут его не иметь - в этом случае вы можете проверить /etc/*release
файлы:
if [ "$(grep -Ei 'debian|buntu|mint' /etc/*release)" ]; then
# do stuff
fi
Где debian|buntu|mint
находится список имен дистрибутивов, которые нужно искать (без учета регистра) - отсюда вы можете составить представление о некоторых распространенных производных , хотя производные Debian, такие как Ubuntu, имеют свои собственные производные .
Для систем на основе RedHat производные используют больший диапазон файлов и могут не иметь установленного lsb-release, поэтому вы можете применить следующие методы:
получить название релиза от
lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
Проверьте DISTRIB-ID в lsb-release
файле - «метод резервирования, который, вероятно, не нужен в современных системах», также файл явно отсутствует в Fedora и не содержит DISTRIB_ID в OpenSUSE
проверить наличие некоторых из следующих
/etc/fedora-release
и / или /etc/redhat-release
для RedHat или Fedora
/etc/SuSE-release
для SuSe
/etc/mandriva-release
для мандривы / магии
используйте метод, аналогичный последнему в Debian:
if [ "$(grep -Ei 'fedora|redhat' /etc/*release)" ]; then
...
Первые 3 пункта я получил из cron обновления Google Chrome, чтобы вы могли изучить это, чтобы узнать больше (это также определяет менеджеров пакетов)
Для более широкого диапазона ОС чтение этого поста на SO должно помочь.
lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
?? Просто бегиlsb_release -si