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.


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

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.