Для тестирования систем 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