PATH 和 LD_LIBRARY_PATH 有什么区别?

cin*_*ndy 31 path

我有一些困难的理解之间的差异PATHLD_LIBRARY_PATH。我有一个需要文件 pkg.tcl 的安装设置,但我没有在哪里添加路径:它应该是 toPATH还是LD_LIBRARY_PATH

Gil*_*il' 34

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来源于动态OA d,系统组件加载到库动态链接的可执行文件
  • 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.


小智 26

PATH用于指定可执行程序的目录。LD_LIBRARY_PATH用于指定库的目录。

  • 从其他角度来看,`PATH` 主要由shell 使用,而`LD_LIBRARY_PATH` 则由动态加载器(通常是`ld-linux.so`)使用。 (6认同)