====== 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