# Variables d'environnement et commande su

**URL:** <https://www.debian-fr.org/t/variables-denvironnement-et-commande-su/76819>\
**Category:** Support Debian\
**Created:** [Mai 29, 2018, 8:57 UTC](https://www.debian-fr.org/t/variables-denvironnement-et-commande-su/76819 "2018-05-29T08:57:53Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![BillBok13](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/5f9b8f/32.png) [@BillBok13](https://www.debian-fr.org/u/BillBok13)\
**Post date:** [Mai 29, 2018, 8:57 UTC](https://www.debian-fr.org/t/variables-denvironnement-et-commande-su/76819/1 "2018-05-29T08:57:53Z")

</div>

Bonjour à tous.  
Dans un terminal, lorsque je prend l’identité root en utilisant la commande _su_ seule (et pas _su - root_), je dois retrouver normalement l’ensemble des variables d’environnement de mon compte utilisateur. Or, je constate que je les retrouve toutes, sauf une (_LD\_LIBRARY\_PATH_), qui disparait au changement d’identité.

Cette variable est créée lors de la connexion de mon user standard grâce à l’invocation du script suivant :

```auto
# Ingres environment for II installation
# Generated at installation time

TERM_INGRES=Konsole
II_SYSTEM=/opt/ingressys/
PATH=$II_SYSTEM/ingres/bin:$II_SYSTEM/ingres/utility:$II_SYSTEM/ingres/dba:$PATH
if [$LD_LIBRARY_PATH] ; then
    LD_LIBRARY_PATH=$II_SYSTEM/ingres/lib:$II_SYSTEM/ingres/lib/lp32:$LD_LIBRARY_PATH
else
    LD_LIBRARY_PATH=/lib:/usr/lib:$II_SYSTEM/ingres/lib:$II_SYSTEM/ingres/lib/lp32
fi
export II_SYSTEM TERM_INGRES PATH LD_LIBRARY_PATH

```

Après connexion je retrouve bien ces trois variables d’environnement chez l’utilisateur standard, mais à la suite de la commande _su_, je n’ai plus que les deux premières et pas la dernière.

Quel qu’un aurait-il une piste pour m’aider à comprendre pourquoi ?

Merci d’avance.

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Mai 29, 2018, 9:45 UTC](https://www.debian-fr.org/t/variables-denvironnement-et-commande-su/76819/2 "2018-05-29T09:45:45Z")

</div>

Salut  
Je sais pas mais il existe la possibilité de définir des variables communes à tous en créant un fichier /etc/environment

Au fur et à mesure de mes besoins j’en suis là  
cat /etc/environment  
COUNTRY=FR  
GIGACAGE\_ENABLED=no  
DRI\_PRIME=1

---

<div class="post-metadata">

**Author:** ![BillBok13](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/5f9b8f/32.png) [@BillBok13](https://www.debian-fr.org/u/BillBok13)\
**Post date:** [Mai 29, 2018, 11:09 UTC](https://www.debian-fr.org/t/variables-denvironnement-et-commande-su/76819/3 "2018-05-29T11:09:04Z")

</div>

Merci de ta réponse.  
Ok, c’est une solution de contournement, mais je n’ai habituellement pas besoin de cette variable avec le compte root.  
Dans mon cas, je prends l’identité de root pour une commande particulière qui nécessite les variables d’environnement de l’utilisateur standard ET certains droits administrateur (c’est pourquoi j’utilise _su_ seule).  
En fouillant sur le web, je me suis rendu compte que cette variable était un peu spéciale et à paramétrer avec beaucoup de précautions. En particulier, il semble déconseillé de la placer dans les fichiers de login type .profile, et par extension, dans /etc/environnement.  
[https://www.hpc.dtu.dk/?page\_id=1180](https://www.hpc.dtu.dk/?page_id=1180)

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Mai 29, 2018, 11:52 UTC](https://www.debian-fr.org/t/variables-denvironnement-et-commande-su/76819/4 "2018-05-29T11:52:49Z")

</div>

ok

> [@](#):
>
> [http://www.linuxcertif.com/doc/keyword/LD\_LIBRARY\_PATH/](http://www.linuxcertif.com/doc/keyword/LD_LIBRARY_PATH/)  
> Cette variable d’environnement permet de résoudre des problèmes de bibliothèque partagées manquante. Si une bibliothèque n’est pas à un emplacement standard, elle est signalé manquante par le chargeur. Il suffit alors d’ajouter le chemin vers le dossier de la bibliothèque à LD\_LIBRARY\_PATH pour que celle-ci soit prise en compte par le chargeur.
> 
> Ce type de résolution de problème n’est généralement utilisée que pour la mise au point. Pour ajouter définitivement un emplacement de bibliothèque partagées, il est préférable d’utiliser le fichier ld.so.conf
> 
> Pour préciser plusieurs chemins de recherche dans la variable d’environnement, il faut les séparer par un point virgule.

---

<div class="post-metadata">

**Author:** ![Clochette](https://www.debian-fr.org/user_avatar/www.debian-fr.org/clochette/32/8757_2.png) [@Clochette](https://www.debian-fr.org/u/Clochette)\
**Post date:** [Mai 29, 2018, 12:06 UTC](https://www.debian-fr.org/t/variables-denvironnement-et-commande-su/76819/5 "2018-05-29T12:06:02Z")

</div>

> [@BillBok13](#):
>
> Or, je constate que je les retrouve toutes, sauf une (LD\_LIBRARY\_PATH), qui disparait au changement d’identité.

C’est normale jusque la.  
LD\_LIBRARY\_PATH est supprimé lors de la modification temporaire de la racine, qu’elle soit exportée ou non. Ceci est fait même en utilisant su sans le -. C’est fait, par exemple, lors de l’exécution d’un programme avec le sticky-bit activé (à moins que je me trompe 🤔).

Donc si jamais t’a besoin d’exporter un _path_ différent pour une commande alors tu ajoutera le nécessaire dans le fichier ld.so.conf

---

<div class="post-metadata">

**Author:** ![BillBok13](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/5f9b8f/32.png) [@BillBok13](https://www.debian-fr.org/u/BillBok13)\
**Post date:** [Mai 29, 2018, 1:18 UTC](https://www.debian-fr.org/t/variables-denvironnement-et-commande-su/76819/6 "2018-05-29T13:18:29Z")

</div>

OK, il y a donc une explication, comme toujours dans Linux !  
Merci à tous pour vos réponses.
