Infelizmente, não há uma maneira segura de obter o nome da distribuição. A maioria das principais distros está se movendo em direção a um sistema em que eles usam /etc/os-release
para armazenar essas informações. A maioria das distribuições modernas também inclui as ferramentas lsb_release
, mas elas nem sempre são instaladas por padrão. Então, aqui estão algumas abordagens que você pode usar:
-
Use
/etc/os-release
awk -F= '/^NAME/{print }' /etc/os-release
-
Use as ferramentas
lsb_release
, se disponíveislsb_release -d | awk -F"\t" '{print }'
-
Use um script mais complexo que funcione para a grande maioria das distros:
# Determine OS platform UNAME=$(uname | tr "[:upper:]" "[:lower:]") # If Linux, try to determine specific distribution if [ "$UNAME" == "linux" ]; then # If available, use LSB to identify distribution if [ -f /etc/lsb-release -o -d /etc/lsb-release.d ]; then export DISTRO=$(lsb_release -i | cut -d: -f2 | sed s/'^\t'//) # Otherwise, use release info file else export DISTRO=$(ls -d /etc/[A-Za-z]*[_-][rv]e[lr]* | grep -v "lsb" | cut -d'/' -f3 | cut -d'-' -f1 | cut -d'_' -f1) fi fi # For everything else (or if above failed), just use generic identifier [ "$DISTRO" == "" ] && export DISTRO=$UNAME unset UNAME
-
Analise as informações da versão de
gcc
se instalado:CentOS 5.x
$ gcc --version gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54) Copyright (C) 2006 Free Software Foundation, Inc.
CentOS 6.x
$ gcc --version gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3) Copyright (C) 2010 Free Software Foundation, Inc.
Ubuntu 12.04
$ gcc --version gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 Copyright (C) 2011 Free Software Foundation, Inc.
Ubuntu 14.04
$ gcc --version gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2 Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Isso foi basicamente copiado diretamente da resposta do @ slm para minha pergunta aqui .