J'ai un script shell dans /usr/bin
. Appelons-le hello
.
Il contient ceci :
echo "I am located in $PWD"
echo "I am called from this directory: ???"
Exécution de hello
depuis /home/Documents
J'attends le résultat suivant :
I am located in /usr/bin
I am called from this directory: /home/Documents
Comment puis-je obtenir le chemin du répertoire à partir duquel le script est exécuté ?
Réponse acceptée :
Je ne peux pas commenter une autre réponse, donc je poste ici. Comme dit, dirname
lit juste $0
et prend le nom du répertoire, donc si vous avez appelé quelque chose comme ../../directory/something.sh
il ne résout pas ces points mais renvoie simplement ../../directory
. Au lieu d'utiliser l'expansion de sous-shell avec cd
et pwd
, vous pouvez utiliser une commande très intelligente readlink
qui résout en fait non seulement les répertoires en pointillés, mais également tous les liens symboliques. Je propose donc
echo "I am located at $(readlink -e -- "$0")"
Vous pouvez utiliser un autre dirname
autour de cela pour obtenir le répertoire au lieu du fichier.