Яка різниця між PATH та LD_LIBRARY_PATH?


27

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


Що стосується вашої проблеми з установкою, я особисто ставлю на це ставку TCLLIBPATH. Вибачте, у мене немає аргументів. Просто натяк.
манатура

Відповіді:


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походить від динамічного l oa d er , системного компонента, який завантажує бібліотеки у динамічно пов'язані виконувані файли .
  • 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).
манатура
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.