Qual è la differenza tra PATH e LD_LIBRARY_PATH?


27

Ho delle difficoltà a capire la differenza tra PATHe LD_LIBRARY_PATH. Ho una configurazione di installazione che richiede un file pkg.tcl e non sono dove aggiungere il percorso ad esso: dovrebbe essere PATHo LD_LIBRARY_PATH?


Per quanto riguarda il tuo problema di installazione, personalmente scommetterei TCLLIBPATH. Scusa, non ho discussioni. Solo un suggerimento.
Manatwork

Risposte:


30

I sistemi Unix tendono ad essere organizzati con diversi tipi di file distribuiti su diverse directory. Ad esempio, gli eseguibili sono di solito in directory chiamate bin( /bin, /usr/bin, /usr/local/bin, ...); storicamente, binstava per binario, perché gli eseguibili sono binari (codice macchina), ma possono esserci anche degli script. Dal momento che ci sono diverse directory che contengono eseguibili ed è utile aggiungere e rimuovere al volo directory (ad esempio per testare un'applicazione multi-eseguibile, aggiungerla temporaneamente al percorso di ricerca degli eseguibili), esiste una variabile d'ambiente per questo: PATH. Quando si esegue un programma assegnandone il nome, la shell lo cerca nelle directory menzionate nella PATHvariabile (è un elenco di directory separato da due punti).

Lo stesso meccanismo esiste per altri tipi di file che alcuni programmi cercheranno per nome. Ecco alcune PATHvariabili simili a quelle tipiche (nota che i percorsi di esempio che fornisco non sono esattamente ciò che troverai sul tuo sistema, c'è proprio lì per dare un'idea).

  • PATH: eseguibili (ad es /home/username/bin:/usr/local/bin:/usr/bin:/bin.).
  • MANPATH: pagine di manuale (ad es /usr/local/man:/usr/man.).
  • LD_LIBRARY_PATH: Librerie di codice nativo (su Linux, oltre al valore di questa variabile, il percorso di ricerca contiene in genere /usr/local/lib, /usr/lib, /libe pochi altri). Il nome LDderiva da Dynamic l o d er , il componente di sistema che carica le librerie in eseguibili collegati dinamicamente .
  • PERL5LIB: Librerie Perl (ad es /usr/local/lib/site-perl:/usr/lib/site-perl:/usr/lib/perl:/usr/share/perl.).
  • PYTHONPATH: Librerie Python (ad es /usr/local/lib/python:/usr/lib/python:/usr/lib/python2.6.).
  • TCLLIBPATH: Librerie TCL (ad es /usr/local/lib/tcltk:/usr/lib/tcltk.).

Quindi, se il tuo pkg.tclè un eseguibile autonomo, dagli le autorizzazioni di esecuzione e rilascialo da qualche parte $PATH. Se è una libreria TCL caricata da un programma TCL, rilasciala da qualche parte $TCLLIBPATH.


23

PATHserve per specificare le directory dei programmi eseguibili. LD_LIBRARY_PATHviene utilizzato per specificare le directory delle librerie.


5
Da un altro punto di vista, PATHviene utilizzato principalmente dalla shell, mentre LD_LIBRARY_PATHviene utilizzato dal caricatore dinamico (di solito ld-linux.so).
Manatwork
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.