---
title: 'Linux中PATH、 LIBRARY_PATH、 LD_LIBRARY_PATH的区别'
pubDate: 2018-07-13
tags:
  - 'linux'
description: 'Linux中PATH、 LIBRARY_PATH、 LD_LIBRARY_PATH的区别'
---

**_接触Linux或类Unix的系统多了，就会逃不出环境配置，而各种路径（PATH）就是环境的配置中较为重要的一点_**

## PATH

PATH是可执行文件路径，是三个中我们最常接触到的，因为我们命令行中的每句能运行的命令，如ls、top、ps等，都是系统通过PATH找到了这个命令执行文件的所在位置，再run这个命令（可执行文件）。

**实验：**执行`echo $PATH`能看到当前环境的PATH都配置哪些路径

![](https://source.mkshell.com/15314755943067.jpg)

像我的环境，我还添加了常用的，如pyenv、go、mysql等。

PATH配置起来也略简单。

比如说，在用户的目录下有一个bin文件夹，里面放了有可执行的二进制文件、shell脚本等。

**需求：**我想在任意目录下都能运行上述bin文件夹的可执行文件。

**操作：**那么我只需要把这个bin的路径添加到PATH上：

```
# vim ~/.bash_profile

PATH=$PATH:~/bin
```

即可。

## LIBRARY_PATH和LD_LIBRARY_PATH

这两个路径可以放在一起讨论，

- LIBRARY_PATH是程序**编译期间**查找动态链接库时指定查找共享库的路径
- LD_LIBRARY_PATH是程序**加载运行期间**查找动态链接库时指定除了系统默认路径之外的其他路径

两者的共同点是**库**，库是这两个路径和PATH路径的区别，PATH是可执行文件。

两者的差异点是使用时间不一样。一个是编译期，对应的是开发阶段，如gcc编译；一个是加载运行期，对应的是程序已交付的使用阶段。

配置方法也是类似：

```
export  LD_LIBRARY_PATH=LD_LIBRARY_PATH:XXXX
```

_先这样吧_

若有错误之处请指出，更多地关注[煎鱼](http://www.jianyujianyu.com)。
