Récupère le répertoire à partir duquel le script a été appelé

10

J'ai un script doSmthdans /usr/bin. Est-il possible d'obtenir et d'imprimer le répertoire à partir duquel le script a été appelé ?

Donc, si j'appelle doSmthde /home/mela sortie sera /home/me.

Primož Kralj
la source
Dans quelle langue?
jordanm
Euh, en bash :)
Primož Kralj

Réponses:

11

Lorsque vous appelez une commande dans le shell, le nouveau processus hérite du répertoire de travail du parent. Voici deux façons d'obtenir le répertoire de travail:

echo "$PWD" # variable
pwd         # builtin command
jordanm
la source
1

Par "répertoire auquel il a été appelé", vous semblez vouloir dire son répertoire de travail. Vous pouvez changer cela à l'intérieur du script en utilisant par exemple, cdmais avant de le faire, vous pwdl'imprimerez. Ce sera aussi probablement dans la variable$PWD

Si vous aurez besoin du répertoire de travail initial après l'avoir changé, enregistrez-le simplement en haut de votre script (avant de le changer)

#!/bin/bash
initial_wd=`pwd`

# ... do a lot of stuff ...
# ⋮

cd "$initial_wd"

Si vous l'utilisez pour revenir au répertoire dans lequel vous avez commencé, voir également pushdet popd.

derobert
la source
3
En bash, il y a aussi "$ OLDPWD".
jordanm
@jordanm En effet, mais ce ne sera pas nécessairement le répertoire de travail initial (par exemple, si vous l'avez utilisé cddeux fois)
derobert
$ OLDPWD est ce dont j'ai besoin; J'exécute des scripts bash à partir de l'invite CMD sur Win7 et c'était la variable d'environnement qui contenait le répertoire à partir duquel j'exécute le script. Santé
Darren Bishop du