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

0

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

Mots-clés : , , ,

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

Ecrire un commentaire