Qual é a diferença entre PATH e LD_LIBRARY_PATH?

27

Estou tendo algumas dificuldades para entender a diferença entre PATHe LD_LIBRARY_PATH. Eu tenho uma instalação que precisa de um arquivo pkg.tcl e não estou onde adicionar o caminho: deve ser PATHou LD_LIBRARY_PATH?

cindy
fonte
Em relação ao seu problema de instalação, pessoalmente eu apostaria TCLLIBPATH. Desculpe, não tenho argumento. Apenas uma dica.
manatwork

Respostas:

30

Os sistemas Unix tendem a ser organizados com diferentes tipos de arquivos espalhados por diferentes diretórios. Por exemplo, executáveis são geralmente em diretórios chamados bin( /bin, /usr/bin, /usr/local/bin, ...); historicamente, binrepresentava binário, porque os executáveis ​​são binários (código de máquina), mas também pode haver scripts. Como existem vários diretórios que contêm executáveis ​​e é útil adicionar e remover diretórios imediatamente (por exemplo, para testar um aplicativo multi-executável, você o adiciona temporariamente ao caminho de busca de executáveis), existe uma variável de ambiente para isso: PATH. Quando você executa um programa fornecendo seu nome, o shell o pesquisa nos diretórios mencionados na PATHvariável (é uma lista de diretórios separados por dois pontos).

O mesmo mecanismo existe para outros tipos de arquivos que algum programa procurará pelo nome. Aqui estão algumas PATHvariáveis típicas (observe que os caminhos de exemplo que eu dou não são exatamente o que você encontrará em seu sistema, existe apenas para dar uma idéia).

  • PATH: executáveis ​​(por exemplo /home/username/bin:/usr/local/bin:/usr/bin:/bin).
  • MANPATH: páginas de manual (por exemplo /usr/local/man:/usr/man).
  • LD_LIBRARY_PATH: Bibliotecas de código nativo (em Linux, em adição ao valor dessa variável, o caminho de pesquisa contém, tipicamente, /usr/local/lib, /usr/lib, /libe em alguns outros). O nome LDvem da dinâmica l oa d er , o componente do sistema que carrega bibliotecas em executáveis ligados dinamicamente .
  • PERL5LIB: Bibliotecas Perl (por exemplo /usr/local/lib/site-perl:/usr/lib/site-perl:/usr/lib/perl:/usr/share/perl).
  • PYTHONPATH: Bibliotecas Python (por exemplo /usr/local/lib/python:/usr/lib/python:/usr/lib/python2.6).
  • TCLLIBPATH: Bibliotecas TCL (por exemplo /usr/local/lib/tcltk:/usr/lib/tcltk).

Portanto, se você pkg.tclé um executável independente, conceda permissões de execução e solte-o em algum lugar $PATH. Se for uma biblioteca TCL carregada por um programa TCL, solte-a em algum lugar $TCLLIBPATH.

Gilles 'SO- parar de ser mau'
fonte
23

PATHé para especificar diretórios de programas executáveis. LD_LIBRARY_PATHé usado para especificar diretórios de bibliotecas.

Manula Waidyanatha
fonte
5
De outro ponto de vista, PATHé usado principalmente pelo shell, enquanto LD_LIBRARY_PATHé usado pelo carregador dinâmico (geralmente ld-linux.so).
manatwork