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

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

Системы 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 ее где-нибудь в $TCLLIBPATH .

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