Tester l’existence d’un exécutable en Bash

0

Posted by florian | Posted in Sysadmin | Posted on 06-09-2011

Étiquettes : , , ,

Si tu es l’auteur d’un script Bash magique et que tu veux t’assurer de l’existence de programmes exécutables constituant des pré-requis à sa bonne exécution, alors voilà la bonne façon de le faire :

$ hash foo 2>&- || { echo >&2 "Veuillez installer le programme foo."; exit 1; }

Jusqu’à présent j’utilisais « which » ou d’autres méthodes plus sales moins jolies mais 3 raisons au moins justifient de recourir à hash :

  • which est un programme externe alors que hash est une fonction interne de Bash
  • De nombreux OS fournissent le programme « which » mais celui-ci ne retourne pas de code de sortie, ce qui fait qu’un « if which foo >/dev/null » sera toujours vérifié, même si le programme foo n’existe pas.
  • De nombreux OS font faire diverses à choses à which, comme changer la sortie standard…

Bref, j’ai changé mes habitudes et te conseille de faire de même : à bat which, vive hash !

Source : Stackoverflow