Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

kubiack a écrit :

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 big_smile

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