124 votes

Déterminer le chemin du script BASH en cours d'exécution

Double Possible:
Peut un script Bash dire ce répertoire, il est stocké dans?

Dans un script de commande Windows, on peut déterminer le répertoire du chemin d'accès du script en cours d'exécution à l'aide de %~dp0. Par exemple:

@echo Running from %~dp0

Quel serait l'équivalent en BASH script?

25voto

Alex Reynolds Points 45039

En supposant que vous entriez le chemin complet du script bash, utilisez $0 et dirname , par exemple:

 #!/bin/bash
echo "$0"
dirname "$0"
 

Exemple de sortie:

 $ /a/b/c/myScript.bash
/a/b/c/myScript.bash
/a/b/c
 

Si nécessaire, ajoutez les résultats de la variable $PWD à un chemin relatif.

EDIT: Ajout de guillemets pour gérer les espaces.

9voto

Dimitre Radoulov Points 9185

Contribution de Stephane CHAZELAS sur le postulat En supposant que le shell POSIX soit:

 prg=$0
if [ ! -e "$prg" ]; then
  case $prg in
    (*/*) exit 1;;
    (*) prg=$(command -v -- "$prg") || exit;;
  esac
fi
dir=$(
  cd -P -- "$(dirname -- "$prg")" && pwd -P
) || exit
prg=$dir/$(basename -- "$prg") || exit 

printf '%s\n' "$prg"
 

4voto

xagyg Points 4281
echo Running from `dirname $0`

4voto

Poor Yorick Points 9

Le code de Vlad est surévalué. Devrait être:

 MY_PATH=`dirname "$0"`
MY_PATH=`( cd "$MY_PATH" && pwd )`
 

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