PATH
我在理解和之间的区别时遇到一些困难LD_LIBRARY_PATH
。我有一个需要文件 pkg.tcl 的安装设置,但我不知道在哪里添加它的路径:应该是PATH
还是LD_LIBRARY_PATH
?
答案1
Unix 系统倾向于将不同类型的文件分布在不同的目录中。例如,可执行文件通常位于名为bin
( /bin
, /usr/bin
, /usr/local/bin
, ...) 的目录中;从历史上看,bin
它代表二进制,因为可执行文件是二进制文件(机器代码),但也可以有脚本。由于有多个目录包含可执行文件,并且动态添加和删除目录很有用(例如,为了测试多可执行应用程序,您可以临时将其添加到可执行文件的搜索路径中),因此有一个环境变量:PATH
。当您通过给出程序名称来执行程序时,shell 会在变量中提到的目录中查找它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
来自动态的我OAd呃,将库加载到的系统组件动态链接的可执行文件。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
.
答案2
PATH
用于指定可执行程序的目录。LD_LIBRARY_PATH
用于指定库的目录。