77 votes

Shell script répertoire actuel ?

Quel est le répertoire actuel du shell script ? Est-ce le répertoire courant à partir duquel je l'ai appelé ? Ou ce répertoire où se trouve script ?

156voto

krg Points 1970

Comme déjà mentionné, l'emplacement sera celui à partir duquel le script a été appelé. Si vous souhaitez que le script fasse référence à l'emplacement où il est installé, c'est assez simple. Voici un extrait qui imprimera le PWD et le répertoire installé :

#!/bin/bash
echo "Script executed from: ${PWD}"

BASEDIR=$(dirname $0)
echo "Script location: ${BASEDIR}"

0 votes

Ça ne marche pas pour moi. Elle ne donne que le nom du répertoire contenant, pas le chemin complet. Par exemple, si je fais cela à partir d'un script en /home/user/scripts/x.sh il renvoie scripts pas /home/user/scripts .

47voto

ElGamed Points 769

La plupart des réponses vous donnent le chemin actuel et sont sensibles au contexte. Afin d'exécuter votre script depuis n'importe quel répertoire, utilisez le snippet ci-dessous.

DIR="$( cd "$( dirname "$0" )" && pwd )"

En changeant de répertoire dans un sous-shell, nous pouvons alors appeler pwd et obtenir le chemin correct du script indépendamment du contexte.

Vous pouvez alors utiliser $DIR como "$DIR/path/to/file"

0 votes

Pouvez-vous expliquer ce qui se passe ? Lorsque mon script est exécuté plus de 20 fois simultanément, j'obtiens l'erreur suivante : ....sh: fork: retry: Resource temporarily unavailable Le script est exécuté par OpenVPN (sous le groupe nogroup et le compte nobody).

20voto

Merouane KHALILI Points 355

Le répertoire courant(initial) du shell script est le répertoire à partir duquel vous avez appelé le script.

8voto

keyser Points 5842

Vous pouvez le faire vous-même en vérifiant la sortie de l'application pwd lors de son exécution. Ceci imprimera le répertoire vous êtes actuellement dans . Pas le script.

Si votre script ne change pas de répertoire, il imprimera le répertoire que vous avez l'a fait à partir de .

2voto

Sachin Java Points 29

Pour imprimer le répertoire de travail actuel, c'est-à-dire pwd, il suffit de taper la commande suivante :

echo "the PWD is : ${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