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

Shell et commandes GNU Discussion :

Variables d'environnement script


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 21
    Par défaut Variables d'environnement script
    Bonjour,

    Je souhaiterai créer dans un script une variable d'environnement.
    Prenons l'exemple suivant d'un script nommé "test":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IPE='172.16.2.98'
    export IPE=$IPE
    Puis si je fais echo $IPE, la résultat est vide.

    Par contre, si je lance le script de cette façon:
    La variable est bien exportée, mais si je redémarre la machine, je les perds.

    J'ai donc deux questions:
    1) Comment faire pour que ces variables soient permanentes ?
    2) Pour pouvoir exporter ces variables depuis un script, suis-je obligé de faire ou existe-il une autre méthode ?

    En espérant avoir été clair !

    Cordialement, Benjamin.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Bonjour,

    pour rendre une variable disponible dans l'environnement courant depuis un script, il faut le sourcer, comme tu le fais.
    je ne me souviens pas d'autres façons de faire.

    pour qu'une variable soit exportée de manière pérenne, cela doit être fait dans ~/.bash_profile, ou ~/.bashrc (ça dépend comment démarre ta machine).
    cf . man bash

    Citation Envoyé par benji22fr
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IPE='172.16.2.98'
    export IPE=$IPE
    attention, cette écriture n'est pas POSIX.
    Code POSIX : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IPE="172.16.2.98"
    export IPE
    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    export IPE="172.16.2.98"
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 21
    Par défaut
    Bonjour et merci pour la réponse.

    J'arrive à me dépatouiller en faisant cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IPE="172.16.2.98"
    export IPE=$IPE
    echo "export IPE=$IPE" >> ~/.bashrc
    Maintenant j'ai une autre question !
    Si je ne "refresh" pas mon bashrc, les variables ne sont pas prises en compte, donc je fais:
    ou
    Jusque là pas de problème, mais je souhaite effectuer ces manipulations dans un script bash, mais le problème est que quand je fais le "refresh", mon script s'arrête alors qu'il reste des commandes par la suite.

    Comment faire pour que cette commande soit prise en compte dans le script bash sans stopper son déroulement ?

    Cordialement, Benjamin

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    je souhaite effectuer ces manipulations dans un script bash, mais le problème est que quand je fais le "refresh", mon script s'arrête alors qu'il reste des commandes par la suite.
    si tu avais commencé par nous donner tes intentions, tu n'en serais pas là.

    les variables exportées dans ~/.bashrc sont accessibles pour de l'interpréteur courant, et les programmes qui y sont exécutés :
    par exemple, dans mon .bashrc, j'exporte la variable EDITOR=/usr/bin/vim, et dans un script testXport.exemple, j'ai mis echo $EDITOR; à l'exécution cela m'affiche bien /usr/bin/vim.
    il n'est pas nécessaire de sourcer à nouveau ~/.bashrc.

    donc, il faut détailler davantage ton projet.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 21
    Par défaut
    Je vais détailler tout alors

    J'ai créé un script qui me permet d'installer et configurer automatiquement un cluster MySQL avec deux serveurs (maitre et esclave) sous DRBD et Heartbeat avec la possibilité de créer à part des instances MySQL si besoin par la suite.
    Ce que je souhaite, c'est lors de la première installation (Cluster + mysql), créer des variables d'environnement de toutes les variables importantes du script, du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IPSERVESCLAVE=172.16.2.98
    echo "export IPSERVESCLAVE=$IPSERVESCLAVE" >> ~/.bashrc
    echo $IPSERVESCLAVE
    172.16.2.98
    Afin que par la suite, je puisse aller les récupérer lors de la création d'une nouvelle instance, du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IPSERVESCLAVE=$(echo $IPSERVESCLAVE)
    Ainsi, lors de la création d'une instance MySQL, toutes les variables pré-requises seront renseignées à l'aide des variables d'environnement.
    Jusqu'ici, tout va bien !

    Le soucis que j'ai, c'est que étant donné que c'est du clustering, il faut que toutes ces variables d'environnement soient répliquées sur le serveur esclave au cas où le serveur maitre serait dans les choux, afin de pouvoir continuer à travailler et créer des instances sur l'esclave.

    Mais je n'arrive pas à faire prendre en compte par la biais de ssh les variables d'environnement sur le serveur esclave.
    L'astuce que j'avais trouvé était de répliquer mon .bashrc du maitre vers l'esclave puis rafraîchir par la suite, mais comme expliqué plus tôt, si j'utilise les commandes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    source ~/.bashrc ou bash ou exec bash
    mon script s'arrête !

    Voilà, je crois avoir bien détaillé mon problème ^^
    J'espère avoir été clair

    Cordialement, Benjamin.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    pas besoin de sourcer ~/.bashrc, dans ton script; les variables qui sont exportées depuis ~/.bashrc devraient être accessibles depuis n'importe quelle commande/script.

    si les scripts, qui seront exécutés ultérieurement, le seront de manière non-interactive (sans ouvrir de pseudo-terminal/console), il peut être préférable d'utiliser un fichier annexe qui, lui, sera sourcé dans les-dits scripts.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/10/2008, 11h33
  2. Script Batch : Variable d'environnement dans un fichier "ordinaire"
    Par falcon dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 06/05/2008, 15h54
  3. Script variable d'environnement système
    Par popinenhbourg dans le forum Windows
    Réponses: 8
    Dernier message: 19/07/2007, 17h51
  4. changer une variable d'environnement a partir d'un script
    Par doomxl dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 28/06/2007, 13h08
  5. Réponses: 1
    Dernier message: 11/01/2007, 15h57

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