Est-il normal que la variable LD_LIBRARY_PATH soit manquante dans un environnement?

J'ai trouvé par coïncidence que sur mon Debian Jessie il n'y a pas de variable LD_LIBRARY_PATH (pour être précis, printenv | grep LD ne montre rien lié à linker et echo "$LD_LIBRARY_PATH" montre rien).

C'est le cas dans l'émulateur de terminal x ( qui pourrait l'effacer en raison de setgid ) ainsi que dans le terminal de base ( Ctrl + Alt + F1 ).

Je sais que LD_LIBRARY_PATH peut être considéré comme mauvais, donc Debian peut le bloquer d'une manière ou d'une autre, mais d'autre part il y a quelques files dans /etc/ld.so.conf.d/ qui contiennent des directorys à append à LD_LIBRARY_PATH . Aucun de mes files rc (que je connais) gâcher avec LD_LIBRARY_PATH non plus.

Pourquoi je ne vois pas de variable LD_LIBRARY_PATH ?

Oui, il est normal que vous n'ayez pas de LD_LIBRARY_PATH explicite. Lisez aussi ldconfig (8) et ld-linux (8) et à propos du rpath . Notez que ldconfig met à jour /etc/ld.so.cache , pas LD_LIBRARY_PATH . Parfois, vous définissez le rpath d'un exécutable explicitement avec -Wl,-rpath, directory passé à gcc au moment de la binding.

Si vous avez besoin d'un LD_LIBRARY_PATH (mais vous ne devriez probablement pas le faire), configurez-le vous-même (par exemple dans ~/.bashrc ).

Si vous avez besoin de parameters à l'échelle du système, vous pouvez par exemple envisager d'append /usr/local/lib/ dans /etc/ld.so.conf et exécuter ldconfig après l'installation de chaque bibliothèque.

AFAIK $LD_LIBRARY_PATH est utilisé uniquement par l'éditeur de liens dynamic ld-linux.so (et par dlopen (3) qui l'utilise) après execve (2) . Voir aussi ldd (1) .

Lisez la section Comment écrire des bibliothèques partagées de Drepper pour en savoir plus.