En lsb_release
a été ajoutée à la base standard de Linux (ISO/IEC 23360) dans ce but :
$ lsb_release -si
Ubuntu
$ lsb_release -sd
Ubuntu 18.04.3 LTS
$ lsb_release -sr
18.04
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic
Par conséquent, une déclaration de cas du type
case "`/usr/bin/lsb_release -si`" in
Ubuntu) echo 'This is Ubuntu Linux' ;;
*) echo 'This is something else' ;;
esac
devrait faire ce que vous voulez.
Sur les distributions Linux plus récentes basées sur systemd, il y a également /etc/os-release qui est destiné à être inclus dans Shell Shell avec la commande source (.), comme dans
. /etc/os-release
case "$ID" in
ubuntu) echo 'This is Ubuntu Linux' ;;
*) echo 'This is something else' ;;
esac
Mais dans l'exemple de cas d'utilisation que vous avez donné, vous pouvez en fait être plus intéressé non pas par le nom de la distribution, mais par le fait de savoir si elle a apt-get
ou yum
. Vous pourriez simplement tester la présence des fichiers /usr/bin/apt-get
ou /usr/bin/yum
con if [ -x /usr/bin/apt-get ]; then
... ou pour la présence de répertoires d'infrastructure associés, tels que /var/lib/apt
y /etc/apt/
.