#1 Le 10/03/2007, à 11:48
- kubiack
[RESOLU]Variables d'environement => Comment et où les définir
Bonjour
Je commence à avoir un peu d'expérience sous Ubuntu, mais je suis fréquement confronté au problème de la définition de variables d'environement sans avoir trouvé de solutions satisfaisantes.
Tout d'abord, j'ai essayé d'ajouter
LD_LIBRARY_PATH=/usr/local/lib
dans /etc/environement, mais ça a pas l'air de fonctionner (en tout cas, "env" ne m'indique pas que LD_LIBRARY_PATH est déclarée.
Ensuite, dans mon fichier .bashrc
LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH
Ca fonctionne, mais ça a l'air de fonctionner uniquement pour le terminal
Enfin bref, je voudrais savoir dans quel fichier système il faut placer les déclarations de variable d'environement pour qu'elles soient déclarés au niveau global et dès le démarage du système.
Pour les chemins de librairies, j'ai aussi eu connaissance du /etc/ld.so.conf, mais ça n'a pas l'air de fonctionner bien non plus.
Voilà, si vous avez LA réponse, merci beaucoup de me la faire connaitre.
Merci à toute participation.
Dernière modification par kubiack (Le 13/03/2007, à 18:14)
Hors ligne
#2 Le 10/03/2007, à 12:16
- kubiack
Re : [RESOLU]Variables d'environement => Comment et où les définir
Bon, je viens de trouver un élément de réponse concernant le chemin des librairies
Il faut ajouter le chemin des librairies dans /etc/ld.so.conf et exécuter "sudo ldconfig"
Après ça, mes librairies sont bien trouvées
Par contre, pour définir d'autres variables d'environement, le problème se pose toujours...
Hors ligne
#3 Le 10/03/2007, à 12:33
- Balkoth
Re : [RESOLU]Variables d'environement => Comment et où les définir
Bonjour,
c'est bien dans le fichier /etc/environment (sans e) qu'il faut déclarer ces variables.
Les modifications ne sont pas prises en compte immédiatement, taper
. /etc/environment
pour les appliquer. Ensuite, ce fichier est lu à chaque démarrage.
Hors ligne
#4 Le 10/03/2007, à 12:48
- kubiack
Re : [RESOLU]Variables d'environement => Comment et où les définir
Ok, ça fonctionne. Merci beaucoup.
Y'a quand même une petite subtilité, la variable est déclarée (echo $VARIABLE fonctionne), mais elle n'apparait pas lorsque je fais un "env" ... j'ai raté quelquechose ?
Hors ligne
#5 Le 10/03/2007, à 13:15
- Balkoth
Re : [RESOLU]Variables d'environement => Comment et où les définir
Euh, normalement la variable est aussi affichée par env.
env | grep VARIABLE pour vérifier ?
Hors ligne
#6 Le 11/03/2007, à 16:51
- kubiack
Re : [RESOLU]Variables d'environement => Comment et où les définir
Démonstration avec la variable QTDIR
kubiack@K-taracte:~$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games"
LANG="fr_FR.UTF-8"
LANGUAGE="fr_FR:fr:en_GB:en"
QTDIR="/usr/local/Trolltech/Qt-4.2.2/"
kubiack@K-taracte:~$ echo $QTDIR
/usr/local/Trolltech/Qt-4.2.2/
kubiack@K-taracte:~$ env |grep QTDIR
kubiack@K-taracte:~$
kubiack@K-taracte:~$
La variable QTDIR que j'ai déclaré dans le /etc/environment est bien connue dans le shell courant, mais lorsque je fait un "env" elle n'apparait pas... En plus, si je vais dans un autre terminal, la variable n'est plus connue...
Apparement la variable n'est pas connue au niveau "global" du système.
Hors ligne
#7 Le 11/03/2007, à 17:03
- NicoA380
Re : [RESOLU]Variables d'environement => Comment et où les définir
Moi j'ai fait un fichier ~/.profile qui contient :
#!/bin/sh
export PATH=$PATH:/tmp/32/usr/local/bin:$HOME/.local/bin
et c'est pris en compte par la session graphique également.
Si ça concerne tous les users, il y a un profile ailleur dans /etc/ et des brouettes.
Hors ligne
#8 Le 11/03/2007, à 17:06
- kubiack
Re : [RESOLU]Variables d'environement => Comment et où les définir
Ha, nouvel élément, si je déclare la variable dans /etc/environment et que je reboot, après elle est connue dès le démarrage et elle apparait dans "env".
Faire ". /etc/environment" ne sert qu'a déclarer les variables dans le shell courant.
Donc, pour résumer, il faut déclarer les variables dans /etc/environment, faire ". /etc/environment" pour les utiliser tout de suite, puis rebooter pour qu'elles soient utilisables partout.
Pour les répertoires de librairies, il faut les mettre dans /etc/ld.so.conf et faire un "ldconfig" pour pouvoir les utiliser.
Cependant, j'aimerais bien savoir où toutes les variables du système sont déclarées, car dans ces fichiers là il n'y a que celles que j'ai déclaré moi-même...
Autre question : quel est le nom des variables qui disent à GCC les chemins vers les librairies et les header (/usr/include, /usr/lib entre autre) ?
Hors ligne
#9 Le 12/03/2007, à 03:31
- FiFouille
Re : [RESOLU]Variables d'environement => Comment et où les définir
Ha, nouvel élément, si je déclare la variable dans /etc/environment et que je reboot, après elle est connue dès le démarrage et elle apparait dans "env".
Faire ". /etc/environment" ne sert qu'a déclarer les variables dans le shell courant.
Question idiote ... à ton avis il est sourcé (chargé) quand /etc/environment ?
Quand tu lances un shell ? (bonne réponse)
Et quand tu te connectes, c'est quoi le première exécutable que tu lances (en général) ?
Un shell ? (bonne réponse)
Donc pour que les applications qui "descendent" de ton shell de login héritent de l'environement il faut bien que leur papa l'ait chargé cet environnement
VARIABLE=pouet
variable que pour le shell courant et non exportée (dans les "enfants" (fork)/exec )
export VARIABLE=pouet
variable exportée dans l'environnement
démonstrachionne
$ BLABLA=42
$ echo $BLABLA
42
$ bash
$ echo $BLABLA
$ exit
$ echo $BLABLA
42
$ export BLABLA
$ bash
$ echo $BLABLA
42
/me, toujours aussi agréable
Hors ligne
#10 Le 12/03/2007, à 21:22
- kubiack
Re : [RESOLU]Variables d'environement => Comment et où les définir
Justement, à part rebooter, y'a-t'il un moyen de faire prendre en compte des variables globales ?
Autrement formulé : y'a-t-il une commande "Export" vers le parent, en plus de "export" qui fonctionne pour les enfants ?
Hors ligne
#11 Le 12/03/2007, à 22:57
- FiFouille
Re : [RESOLU]Variables d'environement => Comment et où les définir
Si c'est pour importer l'environement dans le window manager (gnome, kde, xfce, ...) il faut se déconnecter/reconnecter
si c'est pour l'avoir dans un shell il suffit d'en lancer un (avec éventuellement l'option -l pour en faire un shell de login)
maintenant il y à peut être une option pour accéder à l'env du wm, mais je vois pas quoi à première vue
Hors ligne
#12 Le 13/03/2007, à 18:14
- kubiack
Re : [RESOLU]Variables d'environement => Comment et où les définir
Ok, merci pour toutes ces réponses, j'ai réussi à faire ce que je veux (avec /etc/environment + reboot).
Hors ligne