38 votes

DIR = "$ (cd" $ (dirname "$ {BASH_SOURCE [0]}") "&& pwd)" Comment ça marche?

J'ai besoin d'obtenir le chemin du script. Je peux le faire en utilisant pwd si je suis déjà dans le même répertoire, j'ai cherché en ligne et j'ai trouvé ceci

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

Mais je ne sais pas comment l'utiliser.

43voto

Ouroborus Points 6000

Bash gère un certain nombre de variables, y compris l' BASH_SOURCE qui est un tableau de la source de chemins d'accès des fichiers.

${} agit comme une sorte de citer pour les variables.

$() agit comme une sorte de citer pour les commandes, mais ils sont à exécuter dans leur propre contexte.

dirname vous donne la partie du chemin d'accès de l'argument fourni.

cd change le répertoire courant.

pwd donne le chemin d'accès actuel.

&& est une logique and , mais est utilisé dans ce cas pour de son côté effet de l'exécution des commandes l'une après l'autre.

En résumé, cette commande obtient le script du fichier source chemin, il perd juste la partie du chemin d'accès, cds de ce chemin, puis utilise pwd pour retourner le (efficacement) chemin complet du script. Il est affecté à DIR. Après tout cela, le contexte est déroulé si vous revenez dans le répertoire que vous avez commencé, mais avec une variable d'environnement DIR contenant le chemin du script.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X