Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 25/01/2010, 16h55   #1
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 178
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 178
Points : 36
Points : 36
Par défaut Probleme variable d'environnement

Bonjour,

Je voulais savoir une petite chose.
J'ai des variables d'environnements qui sont exportées dans mon .bashrc et d'autres que j'exporte également par un export dans un shell.
En faisant env voilà ce que j'ai :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
BNTT_FOREGROUND=BLACK
BNTT_BACKGROUND=#CDC198
....
LOGNAME=cc_hbe
CVS_RSH=ssh
SSH_CONNECTION=192.5.1.3 57555 192.5.1.199 22
LESSOPEN=|/usr/bin/lesspipe.sh %s
DISPLAY=10.24.68.19:0.0
ORACLE_HOME=/usr/app/oracle/product/10.2.0
G_BROKEN_FILENAMES=1
Je fais en c++ un getenv("LOGNAME") et je récupère le contenu de la variable et pour getenv("BNTT_FOREGROUND") je n'y arrive pas.

Le mystère est insoluble pour le moment j'espère qu'avec votre aide il ne le sera plus très longtemps. Merci d'avance
la_praline est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2010, 17h32   #2
Membre confirmé
 
Avatar de exodev
 
Inscription : septembre 2009
Messages : 201
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : septembre 2009
Messages : 201
Points : 292
Points : 292
Le fichier .bashrc n'est chargé qu'à l'éxécution de bash (ouverture d'un terminal par exemple), ce qui explique pourquoi tu ne peux pas récupérer les variables d'environnement définies dans ce fichier.
exodev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2010, 17h56   #3
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 178
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 178
Points : 36
Points : 36
Au contraire ce que j'explique c'est que les variables définies dans mon bashrc sont accessible mais que les variables que j'exporte comme :

Code :
1
2
 
export BNTT_BACKGROUND=#121212
ne sont pas récupérables par le getenv() dans mon fichier cpp. De plus, je lance mon shell parfois les variables sont exportés parfois elle ne le sont pas. Après un petit moment ces variables n'existe plus dans mon environnement. Je n'y comprends rien
la_praline est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2010, 18h11   #4
Membre confirmé
 
Avatar de exodev
 
Inscription : septembre 2009
Messages : 201
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : septembre 2009
Messages : 201
Points : 292
Points : 292
bon effectivement j'ai dis une grosse bêtise, si lancé dans un terminal il récupère bien les variables du shell

sinon il me semble que la différence entre un EXPORT et une assignation basique est que la variable est également porté dans les environnements fistons

p.s. : un petit exemple shell

Code test.sh :
1
2
3
4
5
6
 
#!/bin/bash
export A1="Hello";
A2="world!";
 
/path/to/test2.sh

Code test2.sh :
1
2
3
 
#!/bin/bash
echo "$A1 $A2";

Code Resultat :
1
2
3
 
./test.sh 
Hello
exodev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2010, 18h23   #5
Membre émérite
 
Avatar de ssmario2
 
Mounir Orfi
Inscription : avril 2007
Messages : 665
Détails du profil
Informations personnelles :
Nom : Mounir Orfi
Localisation : Maroc

Informations forums :
Inscription : avril 2007
Messages : 665
Points : 915
Points : 915
Ton programme doit être lancé depuis le même shell où tu as lancé ta commande export. (le même environnement)
__________________
To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --
ssmario2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2010, 19h23   #6
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 178
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 178
Points : 36
Points : 36
Alors je développe c'est dans le shell que sont fait les export.

Ce shell est appellé par un programme et ce même programme récupère un peu plus tard le contenu de ces variables d'environnement. Le soucis c'est que lorsque je lance le programme qui lance le shell je n'arrive pas a voir les variables d'environnement en faisant env.

Parfois ca passe parfois ca passe pas c'est plutot bizarre.
la_praline est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2010, 20h59   #7
Membre chevronné
 
Inscription : septembre 2007
Messages : 685
Détails du profil
Informations personnelles :
Âge : 48
Localisation : Suisse

Informations forums :
Inscription : septembre 2007
Messages : 685
Points : 723
Points : 723
Bonsoir,

La commande export permet de rendre une variable visible dans les process-enfants. Bien sûr, si c'est le premier shell du login, toutes les applications auront accès aux variables exportées. Mais dans un shell quelconque, il faut à la fois exporter puis lancer le programme qui va lire la variable exportée.
__________________
Un problème bien posé est déjà résolu (H. Bergson).
jmelyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 21h25.


 
 
 
 
Partenaires

Hébergement Web