Posted by florian | Posted in Sysadmin | Posted on 06-09-2011
Étiquettes : bash, exécutable, script, tester
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