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 :

Définition de variables d'environnement depuis un script shell


Sujet :

Shell et commandes GNU

  1. #1
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut Définition de variables d'environnement depuis un script shell
    Bonjour

    Je suis sous Ubuntu 21.10

    Lorsque je crée une variable d'environnement à la main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HOME_DEF=/home/coucou
    export HOME_DEF
    ma variable est bien crée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $HOME_DEF
    bash: /home/coucou : est un dossier

    par contre, lorsque je met les deux lignes dans un script .sh, que je lui met les droits en exécution chmod +x monscript.sh

    ./monscript.sh ne crée pas ma variable

    $HOME_DEF n'affiche rien


    Mais pourquoi ?

    Cordialement

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

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

    un script ne s'exécute pas réellement de le shell en cours, mais dans un sous-shell.
    le script, s'exécutant dans un processus enfant, ne peut pas modifier l'environnement de son processus parent.

    pourquoi veux-tu modifier l'environnement courant depuis un script ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Pour ne pas avoir à retaper mes commandes à chaque fois.
    Ceci est utiliser pour compiler. Je veux pouvoir mettre à jour mes variables sans le faire en retapant tout.

  4. #4
    Membre émérite Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 348
    Par défaut
    Il faut sourcer ton script et pas l'exécuter :
    Rq : du coup tu peux (ou devrais) faire chmod -x monscript.sh.

  5. #5
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Merci.

    Ca marche !

    Puis-je avoir une explication ?
    Que signifier sourcer ?

  6. #6
    Membre émérite Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 348
    Par défaut
    Cf. help . ou help source :
    Exécute des commandes depuis un fichier dans le shell actuel.
    Contrairement à l'exécution, qui exécute les commandes dans un sous-shell comme l'a dit N_BaH.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 652
    Par défaut
    Citation Envoyé par balkany Voir le message
    tu peux (ou devrais) faire chmod -x monscript.sh.
    un script qu'on source n'a pas à être exécutable.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Membre émérite Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 348
    Par défaut
    Précisément : cette commande enlève les droits d'exécution (et toi tu peux enlever ton -1 sur mon message )

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 652
    Par défaut
    en effet, j'ai mal lu.
    passons, rapidement.


    est-ce que je ferais un script pour définir quelques variables, ou est-ce que je les définirais "inconditionnellement" dans ~/.bashrc ?
    ainsi, il ne serait même pas nécessaire de sourcer le script : les variables existeraient dans l'environnement courant dès son démarrage.

    c'est pour ça que je n'ai pas proposé immédiatement de sourcer le script.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #10
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Merci balkany

  11. #11
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    bonjour

    en fait ce que tu fais ici est assez connu sous linux, ce sont les ".env" files
    Et puisque tu parles de compilation, c'est assez courant avec les makefiles et aussi docker-compose

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/07/2012, 10h21
  2. Réponses: 3
    Dernier message: 18/12/2008, 07h29
  3. Définir une variable d'environnement depuis un script
    Par pmithrandir dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 05/11/2008, 11h24
  4. Réponses: 5
    Dernier message: 26/01/2008, 18h45
  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