Quelle est la différence entre PATH et LD_LIBRARY_PATH?

27

J'ai de la difficulté à comprendre la différence entre PATHet LD_LIBRARY_PATH. J'ai une configuration d'installation qui nécessite un fichier pkg.tcl et je ne sais pas où lui ajouter le chemin: doit-il être à PATHou LD_LIBRARY_PATH?

cindy
la source
Concernant votre problème d'installation, personnellement je parierais TCLLIBPATH. Désolé, je n'ai aucun argument. Juste un indice.
manatwork

Réponses:

30

Les systèmes Unix ont tendance à être organisés avec différents types de fichiers répartis sur différents répertoires. Par exemple, sont généralement dans executables répertoires appelés bin( /bin, /usr/bin, /usr/local/bin, ...); historiquement, binsignifiait binaire, car les exécutables sont des binaires (code machine), mais il peut aussi y avoir des scripts. Puisqu'il existe plusieurs répertoires qui contiennent des exécutables, et qu'il est utile d'ajouter et de supprimer des répertoires à la volée (par exemple, pour tester une application multi-exécutable, vous l'ajoutez temporairement au chemin de recherche des exécutables), il existe une variable d'environnement pour cela: PATH. Lorsque vous exécutez un programme en donnant son nom, le shell le recherche dans les répertoires mentionnés dans la PATHvariable (c'est une liste de répertoires séparés par deux-points).

Le même mécanisme existe pour d'autres types de fichiers que certains programmes vont rechercher par nom. Voici quelques PATHvariables typiques (notez que les exemples de chemins que je donne ne sont pas exactement ce que vous trouverez sur votre système, juste là pour donner une idée).

  • PATH: exécutables (par exemple /home/username/bin:/usr/local/bin:/usr/bin:/bin).
  • MANPATH: pages de manuel (par exemple /usr/local/man:/usr/man).
  • LD_LIBRARY_PATH: Les bibliothèques de code natif (sous Linux, en plus de la valeur de cette variable, le chemin recherche contient généralement /usr/local/lib, /usr/lib, /libet quelques autres). Le nom LDvient de la dynamique l oa d er , le composant système qui charge les bibliothèques dans des exécutables liés dynamiquement .
  • PERL5LIB: Bibliothèques Perl (par exemple /usr/local/lib/site-perl:/usr/lib/site-perl:/usr/lib/perl:/usr/share/perl).
  • PYTHONPATH: Bibliothèques Python (par exemple /usr/local/lib/python:/usr/lib/python:/usr/lib/python2.6 ).
  • TCLLIBPATH: Bibliothèques TCL (par exemple /usr/local/lib/tcltk:/usr/lib/tcltk).

Donc, si vous pkg.tclêtes un exécutable autonome, donnez-lui des autorisations d'exécution et déposez-le quelque part $PATH. S'il s'agit d'une bibliothèque TCL chargée par un programme TCL, déposez-la quelque part $TCLLIBPATH.

Gilles 'SO- arrête d'être méchant'
la source
23

PATHsert à spécifier les répertoires des programmes exécutables. LD_LIBRARY_PATHest utilisé pour spécifier les répertoires des bibliothèques.

Manula Waidyanatha
la source
5
D'un autre point de vue, PATHest utilisé principalement par le shell, tandis que LD_LIBRARY_PATHpar le chargeur dynamique (généralement ld-linux.so).
manatwork