Was ist der Unterschied zwischen PATH und LD_LIBRARY_PATH?

27

Ich habe einige Schwierigkeiten, den Unterschied zwischen PATHund zu verstehen LD_LIBRARY_PATH. Ich habe ein Installationssetup, für das eine Datei pkg.tcl erforderlich ist, und ich kann den Pfad nicht hinzufügen. Sollte dies der Fall sein PATHoder LD_LIBRARY_PATH?

Cindy
quelle
In Bezug auf Ihr Installationsproblem würde ich persönlich darauf wetten TCLLIBPATH. Entschuldigung, ich habe kein Argument. Nur ein Hinweis.
Manatwork

Antworten:

30

Unix-Systeme sind in der Regel mit unterschiedlichen Dateitypen organisiert, die auf verschiedene Verzeichnisse verteilt sind. Zum Beispiel ausführbare Dateien sind in der Regel in Verzeichnissen mit dem Namen bin( /bin, /usr/bin, /usr/local/bin, ...); stand historisch binfür binary, da es sich bei den ausführbaren Dateien um Binärdateien (Maschinencode) handelt, es kann aber auch Skripte geben. Da es mehrere Verzeichnisse gibt, die ausführbare Dateien enthalten, und es nützlich ist, Verzeichnisse im laufenden Betrieb hinzuzufügen und zu entfernen (z. B. um eine Anwendung mit mehreren ausführbaren Dateien zu testen, fügen Sie sie vorübergehend dem Suchpfad für ausführbare Dateien hinzu), gibt es dafür eine Umgebungsvariable: PATH. Wenn Sie ein Programm unter Angabe seines Namens ausführen, sucht die Shell es in den in der PATHVariablen angegebenen Verzeichnissen (eine durch Doppelpunkte getrennte Liste von Verzeichnissen).

Der gleiche Mechanismus existiert für andere Dateitypen, nach denen ein Programm nach Namen suchen wird. Hier sind ein paar typische PATHVariablen (beachten Sie, dass die von mir angegebenen Beispielpfade nicht genau das sind, was Sie auf Ihrem System finden, sondern nur eine Idee haben).

  • PATH: ausführbare Dateien (zB /home/username/bin:/usr/local/bin:/usr/bin:/bin).
  • MANPATH: Manualpages (zB /usr/local/man:/usr/man).
  • LD_LIBRARY_PATH: Native Code - Bibliotheken (auf Linux enthält der Lookup - Pfad neben den Wert dieser Variablen, in der Regel /usr/local/lib, /usr/lib, /libund ein paar andere). Der Name LDkommt von dynamischen l o d er die Systemkomponente , die Lasten in Bibliotheken dynamisch verknüpfte ausführbare Dateien .
  • PERL5LIB: Perl-Bibliotheken (zB /usr/local/lib/site-perl:/usr/lib/site-perl:/usr/lib/perl:/usr/share/perl).
  • PYTHONPATH: Python-Bibliotheken (zB /usr/local/lib/python:/usr/lib/python:/usr/lib/python2.6).
  • TCLLIBPATH: TCL-Bibliotheken (zB /usr/local/lib/tcltk:/usr/lib/tcltk).

Wenn pkg.tcles sich also um eine eigenständige ausführbare Datei handelt, geben Sie ihr Ausführungsberechtigungen und legen Sie sie irgendwo ab $PATH. Wenn es sich um eine TCL-Bibliothek handelt, die von einem TCL-Programm geladen wurde, legen Sie sie irgendwo ab $TCLLIBPATH.

Gilles 'SO - hör auf böse zu sein'
quelle
23

PATHDient zum Angeben von Verzeichnissen ausführbarer Programme. LD_LIBRARY_PATHwird verwendet, um Bibliotheksverzeichnisse anzugeben.

Manula Waidyanatha
quelle
5
Aus anderer Sicht PATHwird es hauptsächlich von der Shell verwendet, während LD_LIBRARY_PATHes (normalerweise ld-linux.so) vom dynamischen Lader verwendet wird .
Manatwork