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.