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

Résolu
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. merci pour vos réponses !

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

    Merci!
    1. Modérateur
      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)
      1. 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.
        1. 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
          
          1. 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
            ...
            1. Salut,

              Ou

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