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

Résolu
pifou25 Messages postés 152 Statut Membre -  
pifou25 Messages postés 152 Statut Membre -
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
Configuration: Linux
Firefox 3.0.16

8 réponses

  1. debianhunter Messages postés 119 Date d'inscription   Statut Membre Dernière intervention   24
     
    Salut,

    Est-ce que
    dirname $0
    te conviendrai ?
    1
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    pwd ?
    0
  3. lami20j
     
    Salut,

    Ou

    lami20j@debian:~/pifou/scripts$ cat test.sh 
    #!/bin/bash
    
    echo $PWD
    lami20j@debian:~/pifou/scripts$ ./test.sh 
    /home/lami20j/pifou/scripts
    0
  4. pifou25 Messages postés 152 Statut Membre
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j
     
    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
  7. Urielxx Messages postés 223 Statut Membre 46
     
    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
  8. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  9. pifou25 Messages postés 152 Statut Membre
     
    merci pour vos réponses !

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

    Merci!
    0