Outils pour utilisateurs

Outils du site


systemes:astuces-shell

Comment obtenir le répertoire contenant le script en exécution

* bash :

declare -r __DIR__=$(dirname $(readlink -f "${BASH_SOURCE}"))

* batch :

set __DIR__=%~dp0

Comment savoir si une commande est disponible ?

Il s'agit de déterminer si une commande, dont le chemin est inconnu à l'avance (sinon il suffit d'un [ -x /bin/truc ]), est ou non disponible. Son répertoire doit cependant faire partie du PATH.

La solution est d'exécuter la commande which : which va chercher la commande dans les répertoires constituant le PATH. On redirige toutes les sorties (standard + erreur) afin de ne voir ni son résultat ni erreur. Ensuite on teste sa valeur de retour (variable $?) pour savoir si elle a échoué ou non (valeur 0 renvoyée).

Note : certains environnements dotent la commande which d'une option -s pour la rendre silencieuse (qui permettrait de supprimer la redirection vers /dev/null) mais dans un soucis de portabilité, on préférera ne pas s'y remettre

(ba|k)sh

which bidule &>/dev/null
if [ $? -eq 0 ]; then
    # bidule est disponible
else
    # bidule est indisponible
fi

(t)csh

which bidule >& /dev/null
if ($? == 0) then
    # bidule est disponible
else
    # bidule est indisponible
endif
systemes/astuces-shell.txt · Dernière modification: 08/12/2014 16:28 (modification externe)