Pour obtenir OS
et VER
, la dernière norme semble être /etc/os-release
.Avant cela, il y avait lsb_release
et /etc/lsb-release
. Avant cela, vous deviez rechercher des fichiers différents pour chaque distribution.
Voici ce que je suggérerais
if [ -f /etc/os-release ]; then
# freedesktop.org and systemd
. /etc/os-release
OS=$NAME
VER=$VERSION_ID
elif type lsb_release >/dev/null 2>&1; then
# linuxbase.org
OS=$(lsb_release -si)
VER=$(lsb_release -sr)
elif [ -f /etc/lsb-release ]; then
# For some versions of Debian/Ubuntu without lsb_release command
. /etc/lsb-release
OS=$DISTRIB_ID
VER=$DISTRIB_RELEASE
elif [ -f /etc/debian_version ]; then
# Older Debian/Ubuntu/etc.
OS=Debian
VER=$(cat /etc/debian_version)
elif [ -f /etc/SuSe-release ]; then
# Older SuSE/etc.
...
elif [ -f /etc/redhat-release ]; then
# Older Red Hat, CentOS, etc.
...
else
# Fall back to uname, e.g. "Linux <version>", also works for BSD, etc.
OS=$(uname -s)
VER=$(uname -r)
fi
Je pense uname
pour obtenir ARCH
est encore le meilleur moyen. Mais l'exemple que vous avez donné ne concerne évidemment que les systèmes Intel. Je l'appellerais soit BITS
comme ceci :
case $(uname -m) in
x86_64)
BITS=64
;;
i*86)
BITS=32
;;
*)
BITS=?
;;
esac
Ou changez ARCH
être les versions les plus courantes, mais sans ambiguïté :x86
et x64
ou similaire :
case $(uname -m) in
x86_64)
ARCH=x64 # or AMD64 or Intel64 or whatever
;;
i*86)
ARCH=x86 # or IA32 or Intel32 or whatever
;;
*)
# leave ARCH as-is
;;
esac
mais bien sûr, c'est à vous de décider.
J'irais avec ceci comme première étape :
ls /etc/*release
Gentoo, RedHat, Arch &SuSE ont un fichier appelé par ex. /etc/gentoo-release
. Semble être populaire, consultez ce site sur les fichiers de version.
Debian et Ubuntu devraient avoir un /etc/lsb-release
qui contient également des informations sur la version et s'affichera avec la commande précédente.
Un autre rapide est uname -rv
. Si le noyau installé est le noyau de distribution stock, vous allez habituellement trouve parfois le nom dedans.
lsb_release -a
. Fonctionne sur Debian et je suppose Ubuntu, mais je ne suis pas sûr du reste. Normalement, il devrait exister dans toutes les distributions GNU/Linux puisqu'il est lié à LSB (Linux Standard Base).