[shel] variable répertoire en cours / d'exécu

Résolu/Fermé
pifou25 Messages postés 144 Date d'inscription lundi 13 octobre 2003 Statut Membre Dernière intervention 21 décembre 2014 - 29 déc. 2009 à 19:04
pifou25 Messages postés 144 Date d'inscription lundi 13 octobre 2003 Statut Membre Dernière intervention 21 décembre 2014 - 10 janv. 2010 à 18:09
Bonjour,

j'ai fait un script shell (un qui commence par /bin/bash)
Je voudrais l'optimiser selon le répertoire où il est: quelle est la variable si elle existe qui me donne son chemin complet sans le nom du fichier ?
et pas le répertoire courant - qui doit bien exister aussi ...

par exemple: mon script est dans /home/pifou/scripts/test.sh
et moi j'exécute à partir de mon répertoire /home/pifou :
scripts/test.sh

... je veux savoir quelle variable d'environnement (?) contient la valeur /home/pifou/scripts

8 réponses

debianhunter Messages postés 119 Date d'inscription mardi 22 décembre 2009 Statut Membre Dernière intervention 11 juillet 2010 24
10 janv. 2010 à 17:29
Salut,

Est-ce que
dirname $0
te conviendrai ?
1
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
29 déc. 2009 à 19:09
Salut,

pwd ?
0
Salut,

Ou

lami20j@debian:~/pifou/scripts$ cat test.sh 
#!/bin/bash

echo $PWD
lami20j@debian:~/pifou/scripts$ ./test.sh 
/home/lami20j/pifou/scripts
0
pifou25 Messages postés 144 Date d'inscription lundi 13 octobre 2003 Statut Membre Dernière intervention 21 décembre 2014
10 janv. 2010 à 16:32
Bonjour,
j'avais précisé "pas le répertoire courant"
parce que je suis dans /var/www
:/var/www$ ~/test.sh
la réponse de $PWD :
/var/www
je voulais le répertoire du script:
~ ou /home/pifou
...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Salut,

Alors tu utilises la commande find.
Il n'y a pas de variable d'environnement pour chaque fichier de GNU/Linux en plus pour un fichier qu'on ne saura jamais s'il sera crée.
$ cd /var/www/
$ pwd
/var/www
$ find /home/lami20j/ -name 'test.sh'
/home/lami20j/scripts/test.sh
$ find /home/lami20j/ -name 'test.sh' -exec dirname {} \;
/home/lami20j/scripts
0
Urielxx Messages postés 190 Date d'inscription mardi 26 août 2008 Statut Membre Dernière intervention 25 juin 2013 46
10 janv. 2010 à 16:55
Il n'y a pas de variable d'environnement qui précise la localisation de ton script. Par contre, en utilisant $0 et $PWD, tu peux le retrouver : $PWD/$0 est la localisation que tu recherches. Par contre, elle peut très bien contenir des ".." ou autres.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
10 janv. 2010 à 17:21
Re-

Tu peux essayer avec la commande "locate" (faire un updatedb en root avant), à condition que le nom de ton script soit unique...

su -c '/usr/bin/updatedb'
Password:
... (un certrain temps)

dirname $(locate nom_script.sh)
0
pifou25 Messages postés 144 Date d'inscription lundi 13 octobre 2003 Statut Membre Dernière intervention 21 décembre 2014
10 janv. 2010 à 18:09
merci pour vos réponses !

en fait oui je crois que celle ci me convient
LOCALPATH=$(dirname $0)

Merci!
0