Connaître le chemin absolu d’un script à l’intérieur de celui-ci

On utilise ici une particularité de bash donc attention si vous n’utilisez pas le même shell.

La prise de variable se fait comme ceci :

DIR_SCRIPT="$(cd "$(dirname "${BASH_SOURCE[0]}")" > /dev/null 2>&1 && pwd)"

Découpons tout ceci.

Premièrement, DIR_SCRIPT est le nom de la variable que nous pourrons utiliser ensuite.

Ensuite, $(cd "$(dirname "${BASH_SOURCE[0]}")" que nous allons découper en plusieurs parties.
– La plus importante à comprendre : ${BASH_SOURCE[0]}
C’est ici que se joue la particularité à bash de ce script. BASH_SOURCE[0] (ou BASH_SOURCE) contient le chemin (potentiellement relatif) du script qui y fait appel dans tous les scénarios d’invocation possible. Ceci inclue lorsque le script est sourcé, ce qui n’est pas le cas de $0 communément utilisé. $0 est un composant de la spécification POSIX pour les shell alors que BASH_SOURCE, comme son nom l’indique, est spécifique à bash.
– Ensuite dirname permet d’enlever le dernier composant du nom du fichier
– Finalement, cd redirige le script dans ce dossier identifié

Nous redirigeons ensuite avec > /dev/null 2>&1 toute erreur d’affichage ou tout affichage vers /dev/null.

Enfin, nous exécutons pwd dans le nouvel emplacement où nous nous trouvons afin d’en récupérer le chemin absolu. Le résultat de toutes ces opérations est ensuite stocké dans notre variable DIR_SCRIPT.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.