Comment trouver le répertoire où se trouve un script bash à l'intérieur du script

Comment trouver le répertoire où se trouve un script bash à l'intérieur du script
Lorsque vous travaillez avec Bash Scripts, il est utile de connaître l'emplacement du script. Cela peut être particulièrement utile lorsque vous travaillez avec des chemins de fichier relatifs, ou lorsque vous essayez d'exécuter d'autres scripts ou commandes à l'intérieur du script. Dans cet article, nous allons jeter un œil à différentes façons de déterminer le répertoire d'un script bash de l'intérieur du script lui-même.

Comment trouver le répertoire où se trouve un script bash à l'intérieur du script

Pendant que les scripts de bases, vous pouvez nécessiter l'emplacement du script pour automatiser diverses tâches. Il existe deux types de chemins dans Linux:

  • Chemin des parents: Le parent est le répertoire de travail actuel.
  • Chemin absolu: Ceci est le chemin complet du répertoire et des fichiers.

L'un des moyens les plus courants de déterminer l'emplacement d'un script bash est d'utiliser le PWD commande. Le PWD commande (Répertoire de travail imprimé) Affichera le répertoire actuel.

Donc, dans de nombreuses situations en utilisant simplement PWD La commande ne fonctionne pas car elle ne donne que le chemin du répertoire actuellement en activité.

Par exemple, si le script est dans le Téléchargements répertoire et exécuté à partir du Bureau alors la sortie contiendra le / Home / USR / Desktop pas l'emplacement du fichier de script bash qui est / Home / USR / Téléchargements.

Ce tutoriel consiste à obtenir le chemin du répertoire dans lequel le fichier de script bash est situé à l'intérieur du script.

Comment obtenir le chemin du répertoire où se trouve le fichier de script bash

Une autre façon de déterminer le répertoire d'un script bash est d'utiliser le dirname commande. Le dirname La commande prend un chemin de fichier comme argument et renvoie la partie du répertoire du chemin.

Utiliser dirname Commande Pour déterminer le répertoire d'un script, vous appelleriez la commande avec le chemin jusqu'à les derniers composants non slash du script comme argument.

Pour plus de détails sur dirname Exécutez les commandes suivantes dans le terminal:

$ man dirname

Seul dirname ne fonctionnera pas, nous avons besoin d'une autre commande qui est link de lecture. Le link de lecture L'impression de la commande a résolu le lien symbolique. Obtenez plus d'informations sur cette commande en exécutant:

$ man liclink

Maintenant, Créer un script:

$ sudo nano myscript.shot

Et type:

#!/ bac / bash
echo "Le chemin de script bash est $ (dirname -" $ (readLink -f - "0") ";)";

Pour exécuter l'utilisation du script:

$ bash myscript.shot

Changeons le répertoire et voyons quelle est la sortie:

Note: Dans un cas, le script ci-dessus ne fonctionnera pas si le fichier est d'origine au lieu de s'exécuter car il peut être vu dans la sortie suivante:

La sortie est / Home / Sam / Desktop tandis que le fichier de script est présent dans le / Home / Sam annuaire.

Conclusion

En conclusion, il existe plusieurs façons de déterminer le répertoire d'un script bash à l'intérieur du script lui-même. Le dirname avec link de lecture L'utilitaire peut être utilisée pour déterminer le répertoire d'un script. Cependant, simplement utiliser PWD La commande ne fonctionne pas car elle ne donne que le répertoire actuellement fonctionnel.