IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

extraire le chemin d'un script


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par défaut extraire le chemin d'un script
    Bonjour,

    pour charger un fichier de config d'un script (contenant les différentes constantes à initialiser), je suis obligé de sourcer le fichier avec son chemin exact :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    source /chemin_du_script/monfichier.ini
    j'aimerais pouvoir rendre le chargement de ce fichier de config indépendant de sa localisation. J'avais imaginer faire quelque chose du type :

    or, pwd me renvoie le chemin depuis lequel on exécute le script, pas celui où se trouve le script.

    Comment faire ?

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 685
    Par défaut le palais des glaces...
    vois ceci...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par défaut
    merci beaucoup, désolé de ne pas avoir cherché comme il faut sur le forum...
    la solution est donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    execPath=$(cd (dirname $0); pwd)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par défaut
    en fait :

    suffit largement...

  5. #5
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 46
    Par défaut
    Citation Envoyé par d10g3n Voir le message
    en fait :

    suffit largement...
    Non, dans certain cas, cela ne sera pas suffisant .(chemin relatif, absolu)
    De plus, aucune des solutions ne protègent des espaces dans le path

    Si des personnes chevronnées te dirigent vers un post, c'est que c'est LA solution, et tu penses bien que TA solution, ils la connnaissent, si ils ne l'indiquent pas, c'est pas pour rien

    PS: perso, j'écris comme ça, je double les cotes pour protéger des espaces, et je ne savais pas qu'on pouvait se passer du $ pour le dirname ! (a moins que le $ oblige la protection des blancs)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    path=$(cd "$(dirname "$0")"; pwd)

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 290
    Par défaut
    en bash on a aussi

    path="$(cd "${0%/*}"; pwd)"

    il faut pas oublier les guillemets dans ta définition de variable .
    Utiliser des espace dans les chemins unix, il faut être joueur...

    exemple (remplace var par 0):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    romain@lilibox:~$ var="un machin/truc"
    romain@lilibox:~$ toto="$(cd "${var%/*}"; pwd)"
    romain@lilibox:~$ echo $toto
    /home/romain/un machin

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 860
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par AnsuzPeorth Voir le message
    Non, dans certain cas, cela ne sera pas suffisant .(chemin relatif, absolu)
    Hum, dans 99,9% des cas, si on cherche le chemin du script, c'est parce qu'on a besoin d'aller chercher un fichier particulier et qu'on sait où est ce fichier par rapport au script.
    Et donc dans ces 99,9% des cas, qu'on récupère le chemin relatif ou absolu ne changera rien car on saura, à partir de ce chemin récupéré, trouver le fichier qui nous intéresse.
    En l'occurrence, d10g3n a juste besoin de récupérer un fichier "monfichier.ini" situé dans le même répertoire que le script, ici la solution path=$(dirname $0) suffira amplement et fonctionnera qu'on ait lancé le script en relatif ou en absolu...

    Citation Envoyé par AnsuzPeorth Voir le message
    PS: perso, j'écris comme ça, je double les cotes pour protéger des espaces, et je ne savais pas qu'on pouvait se passer du $ pour le dirname ! (a moins que le $ oblige la protection des blancs)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    path=$(cd "$(dirname "$0")"; pwd)
    Non. Le $(...) symbolise l'appel à une commande et il est obligatoire. Ou alors on passe par l'ancienne syntaxe `...`
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Chemin d'un script d'ouverture de session Recherche :
    Par hélios44 dans le forum Windows XP
    Réponses: 1
    Dernier message: 31/05/2010, 18h09
  2. Réponses: 2
    Dernier message: 11/04/2009, 11h04
  3. Récupérer chemin absolu du script en cours d'exécution
    Par greatmaster1971 dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 15/09/2008, 09h07
  4. Comment extraire le chemin du code source ?
    Par elsouljacker dans le forum Langage
    Réponses: 9
    Dernier message: 13/04/2007, 16h29
  5. Extraire le chemin d'une application
    Par rachid202446 dans le forum Débuter
    Réponses: 3
    Dernier message: 15/10/2005, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo