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

Langage Perl Discussion :

Ajouter des variables au PATH


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 40
    Points : 42
    Points
    42
    Par défaut Ajouter des variables au PATH
    Bonjour à tous,

    J'ai essayé d'ajouter des chemins ou des variables au path mais rien ne marche :/

    Pour ajouter un simple chemin au path j'ai essayé un truc du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system "set PATH=%PATH%;d:/toto/bin";
    et pour des variables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system "set JAVA_HOME=d:/jdk";
    Cependant rien ne marche...

    Même un vieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ENV{mavar}=valeur;
    reste sans succès...

    Je compte sur vos lumières :p

    Marie.

  2. #2
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Le PATH est une variable d'environnement dont les processus héritent de leur processus-père.

    Le problème, c'est que lorsque tu lance une commande depuis Perl (avec system ()), tu crèes un processus fils, dans lequel tu modifie son PATH, puis tu retourne au processus père, lequel n'a pas connaissance des modifications apportées à son fils.


    L'idéal est de modifier le PATH avant l'invocation de ton script Perl, où au pire de faire une invocation en deux temps : un script "booster" qui fait un system () en lui passant la modification du path et le lancement de la "charge utile", c'est à dire du script qui en a besoin.

    Bon courage
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    Bonjour

    Et un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ENV{PATH} = $ENV{PATH}.":/nom_de_ton_repertoire";
    A+
    Strach

  4. #4
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par strach
    Et un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ENV{PATH} = $ENV{PATH}.":/nom_de_ton_repertoire";
    Ce ne sera pas suffisant ...

    En voici la preuve ( sous Windows, qui semble être la plate-forme de Feustine, dans ce cas ... donc attention au séparateur de path qui doit alors être ; et non : ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ENV{PATH} .= ";e:/temp";
    print $ENV{PATH}."\n";
    system 'echo %PATH%';
    Ce code montre bien le path modifié de la variable %ENV, mais montre aussi que le processus-fils n'en a cure.

    Par contre, je crois bien que le module [b]Env:ath|/b] du CPAN donne tous les moyens pour le faire, et ce, en toute sécurité/portabilité/stabilité du code.

    Bonne continuation.
    Bon courage
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 40
    Points : 42
    Points
    42
    Par défaut
    Merci beaucoup à vous deux pour ces précieux conseils !

    Marie.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par 2Eurocents
    En voici la preuve ( sous Windows, qui semble être la plate-forme de Feustine, dans ce cas ... donc attention au séparateur de path qui doit alors être ; et non : )
    Oups désolé, j'avais testé sur ma machine

    Ce que je ne comprends pas, c'est que je croyais qu'un system équivalait à un fork + exec, or :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    print "$ENV{PATH}\n";
    $ENV{PATH}=$ENV{PATH}.":/root";
    $pid=fork;
    if ($pid==0) {
    	print "Variable d'environnement PATH du fils : $ENV{PATH}\n";
    	exit(0);
    }
    print "Variable d'environnement PATH du père : $ENV{PATH}\n";
    exit(0);
    me donne le même PATH dans le père comme le fils, cela implique qu'un fork duplique aussi les variables d'environnement, non ?

    Donc quelles réelles différences entre system et fork+exec ?

    Merci
    Strach

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/05/2014, 08h18
  2. Ajouter des variables supplémentaires pour une acp
    Par fafabzh6 dans le forum SAS STAT
    Réponses: 7
    Dernier message: 31/01/2008, 16h31
  3. requete ajout, synthaxe suivant type des variables
    Par petitours dans le forum Requêtes et SQL.
    Réponses: 13
    Dernier message: 13/08/2007, 11h44
  4. Ajouter des chemins dans la variable PATH
    Par Righetto Dominique dans le forum Linux
    Réponses: 7
    Dernier message: 21/03/2004, 17h38

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