В чем разница между PATH и LD_LIBRARY_PATH?


27

У меня есть некоторые трудности с пониманием разницы между PATHи LD_LIBRARY_PATH. У меня есть установочная установка, которой нужен файл pkg.tcl, и я не знаю, куда добавить путь к нему: он должен быть PATHили LD_LIBRARY_PATH?


Что касается вашей проблемы с установкой, лично я бы поставил TCLLIBPATH. Извините, у меня нет аргументов. Просто намек.
manatwork

Ответы:


30

Unix-системы, как правило, организованы с различными типами файлов, распределенных по разным каталогам. Например, исполняемые файлы обычно находятся в каталогах , называемых bin( /bin, /usr/bin, /usr/local/bin...); исторически, binрасшифровывался как двоичный, потому что исполняемые файлы - это двоичные файлы (машинный код), но могут быть и скрипты. Поскольку существует несколько каталогов, содержащих исполняемые файлы, и полезно добавлять и удалять каталоги «на лету» (например, для тестирования многопользовательского приложения, вы временно добавляете его в путь поиска исполняемых файлов), для этого есть переменная среды: PATH, Когда вы выполняете программу, задавая ее имя, оболочка ищет ее в каталогах, упомянутых в PATHпеременной (это список каталогов, разделенных двоеточиями).

Тот же механизм существует для других типов файлов, которые программа будет искать по имени. Вот несколько типичных PATHпеременных (обратите внимание, что приведенные мной примеры путей не совсем то, что вы найдете в своей системе, здесь просто есть идея).

  • PATH: исполняемые файлы (например /home/username/bin:/usr/local/bin:/usr/bin:/bin).
  • MANPATH: справочные страницы (например /usr/local/man:/usr/man).
  • LD_LIBRARY_PATH: Родной библиотеки кода (на Linux, в дополнение к значению этой переменной, поиска пути обычно содержит /usr/local/lib, /usr/lib, /libи некоторые другие). Название LDпроисходит от динамического л габаритной д эр , система компонент , который загружает библиотеки в динамически подключаемых исполняемые файлы .
  • PERL5LIB: Библиотеки Perl (например /usr/local/lib/site-perl:/usr/lib/site-perl:/usr/lib/perl:/usr/share/perl).
  • PYTHONPATH: Библиотеки Python (например /usr/local/lib/python:/usr/lib/python:/usr/lib/python2.6).
  • TCLLIBPATH: Библиотеки TCL (например /usr/local/lib/tcltk:/usr/lib/tcltk).

Так что, если вы pkg.tcl- отдельный исполняемый файл, дайте ему разрешение на выполнение и поместите его куда-нибудь в $PATH. Если это библиотека TCL, загруженная программой TCL, поместите ее где-нибудь в $TCLLIBPATH.


23

PATHпредназначен для указания каталогов исполняемых программ. LD_LIBRARY_PATHиспользуется для указания каталогов библиотек.


5
С другой точки зрения, PATHиспользуется в основном оболочкой, а LD_LIBRARY_PATHиспользуется динамическим загрузчиком (обычно ld-linux.so).
manatwork
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.