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 02/05/2011, 23h54   #1
Futur Membre du Club
 
Homme
Technicien réseau
Inscription : avril 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Nouvelle-Calédonie

Informations professionnelles :
Activité : Technicien réseau
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : avril 2011
Messages : 15
Points : 17
Points : 17
Par défaut Variables locales et variables d'environnement

Bonjour
j'ai du mal à faire la différence entre
* variables locales du shell
* variables d'environnement

Je lis ce qui suit dans WIKIPEDIA

Citation:
Sous Unix et Linux, les shells utilisent deux types de variables, utilisant la même syntaxe :

* Des variables locales au shell,
* Des variables d'environnement transmises aux applications lancées par le shell.

Ces dernières sont accédées comme des variables locales et doivent être exportées avec la commande export (pour bash), ou utiliser la commande setenv (csh)
Je fais le test suivant dans une fenêtre terminal de mon environnement graphique dans RHEL 5.3

Code :
1
2
3
4
[dom@vnilux ~]$ TEST_VAR="toto"
[dom@vnilux ~]$ echo $TEST_VAR
toto
[dom@vnilux ~]$
TEST_VAR est une variable locale du terminal (du shell en cours). Si je ferme le terminal par exit, et que j'ouvre à nouveau le terminal, TEST_VAR n'est plus définie; pour moi donc, c'est (c'était) une variable locale au shell

Je fais le test suivant:

Code :
1
2
3
4
5
[dom@vnilux ~]$ TEST_VAR="toto"
[dom@vnilux ~]$ echo $TEST_VAR
toto
[dom@vnilux ~]$ export TEST_VAR
[dom@vnilux ~]$
Je ne vois pas la différence qu'apporte la commande export; la variable TEST_VAR reste une variable "temporaire" du shell (qui n'est plus définie si on ferme et qu'on ré-ouvre un nouveau terminal), puisque l'export n'a pas été fait en dur dans les fichiers de configuration.
Est ce que le fait de faire la commande export a transformé la variable locale TEST_VAR en variable d'environnement ? si c'est le cas, je ne vois pas concrètement ce que cela apporte de plus

Merci par avance des réponses
syncope_nc est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 03/05/2011, 07h20   #2
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 534
Points : 7 743
Points : 7 743
une variable issue d'un fichier charge sera une variable permanante tout autre déclaration est une variable locale du shell en cours.
utiliser ou pas export c'est surtout dépendant du shell utilisé (ksh,sh,csh,etc...) et du type de contenu de la variable.
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 11h23   #3
Membre Expert
 
Homme Alexis
Intégrateur d'Exploitation
Inscription : février 2003
Messages : 876
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Intégrateur d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 876
Points : 1 619
Points : 1 619
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
Tu prends le problème à l'envers La variable exportée sera passée aux fils de ton shell :

Code :
1
2
3
4
5
6
7
$ TEST_VAR="toto"
$ echo $TEST_VAR
toto
$ bash
$ echo $TEST_VAR
 
$ exit
Ici, j'ai fait une variable TEST_VAR sans export : en ouvrant un nouveau process (par exemple, un nouveau shell bash), la variable n'est plus connue...

Code :
1
2
3
4
5
6
7
8
 
$ export TEST_VAR="toto"
$ echo $TEST_VAR
toto
$ bash
$ echo $TEST_VAR
toto
$ exit
Dans ce deuxième exemple, j'ai utilisé export pour la variable TEST_VAR : en ouvrant un nouveau process (par exemple, un nouveau shell bash), la variable est bien connue !

Edit: pour être plus clair, un exemple plus concret
Code :
1
2
3
4
5
6
7
8
9
10
11
12
$ cat > exp.sh
#!/bin/sh
echo "TEST_VAR="$TEST_VAR
$ chmod +x exp.sh
$ TEST_VAR="toto"
$ echo $TEST_VAR
toto
$ ./exp.sh
TEST_VAR=
$ export TEST_VAR="toto"
$ ./exp.sh
TEST_VAR=toto
Tu vois bien que dans le premier exemple, ton script exp.sh ne connait pas la variable TEST_VAR alors que lors du second passage, il l'affiche correctement car elle a été exportée.
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h28.


 
 
 
 
Partenaires

Hébergement Web