¿Cuál es la diferencia entre PATH y LD_LIBRARY_PATH?

27

Tengo algunas dificultades para entender la diferencia entre PATHy LD_LIBRARY_PATH. Tengo una configuración de instalación que necesita un archivo pkg.tcl y no sé dónde agregarle la ruta: ¿debería ser PATHo LD_LIBRARY_PATH?

cindy
fuente
En cuanto a su problema de instalación, personalmente apostaría TCLLIBPATH. Lo siento, no tengo argumento. Solo una pista.
manatwork

Respuestas:

30

Los sistemas Unix tienden a organizarse con diferentes tipos de archivos distribuidos en diferentes directorios. Por ejemplo, los ejecutables son por lo general en directorios llamados bin( /bin, /usr/bin, /usr/local/bin, ...); históricamente, binsignificaba binario, porque los ejecutables son binarios (código de máquina), pero también puede haber scripts. Dado que hay varios directorios que contienen ejecutables, y es útil agregar y eliminar directorios sobre la marcha (por ejemplo, para probar una aplicación multi-ejecutable, lo agrega temporalmente a la ruta de búsqueda de ejecutables), hay una variable de entorno para eso: PATH. Cuando ejecuta un programa dando su nombre, el shell lo busca en los directorios mencionados en la PATHvariable (es una lista de directorios separados por dos puntos).

El mismo mecanismo existe para otros tipos de archivos que algún programa buscará por nombre. Aquí hay algunas PATHvariables típicas (tenga en cuenta que las rutas de ejemplo que proporciono no son exactamente las que encontrará en su sistema, solo están ahí para dar una idea).

  • PATH: ejecutables (por ejemplo /home/username/bin:/usr/local/bin:/usr/bin:/bin).
  • MANPATH: páginas del manual (p /usr/local/man:/usr/man. ej .).
  • LD_LIBRARY_PATH: Bibliotecas de código nativo (en Linux, además del valor de esta variable, la ruta de búsqueda contiene típicamente /usr/local/lib, /usr/lib, /liby algunos otros). El nombre LDproviene de dinámica l OA d er , el componente del sistema que las bibliotecas se carga en ejecutables enlazados dinámicamente .
  • PERL5LIB: Bibliotecas Perl (por ejemplo /usr/local/lib/site-perl:/usr/lib/site-perl:/usr/lib/perl:/usr/share/perl).
  • PYTHONPATH: Bibliotecas de Python (por ejemplo /usr/local/lib/python:/usr/lib/python:/usr/lib/python2.6).
  • TCLLIBPATH: Bibliotecas TCL (por ejemplo /usr/local/lib/tcltk:/usr/lib/tcltk).

Entonces, si su pkg.tcles un ejecutable independiente, dele permisos de ejecución y suéltelo en algún lugar $PATH. Si es una biblioteca TCL cargada por un programa TCL, colóquela en algún lugar $TCLLIBPATH.

Gilles 'SO- deja de ser malvado'
fuente
23

PATHes para especificar directorios de programas ejecutables. LD_LIBRARY_PATHse usa para especificar directorios de bibliotecas.

Manula Waidyanatha
fuente
55
Desde otro punto de vista, PATHes utilizado principalmente por el shell, mientras que LD_LIBRARY_PATHes usado por el cargador dinámico (generalmente ld-linux.so).
manatwork