Linux PATH环境变量是shell用于查找可执行命令的目录路径集合,当你在终端输入一个命令时,系统不会自动知道这个命令对应的程序存放在哪个位置,就会按照PATH里记录的目录顺序依次查找,找到第一个匹配的可执行文件就会执行它。

PATH环境变量的基本特性
PATH的值是由多个绝对路径组成的字符串,不同路径之间用冒号分隔,你可以通过echo $PATH命令查看当前系统的PATH配置,输出结果类似下面的内容:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
这些路径的含义分别是:
- /usr/local/sbin:本地安装的系统管理命令目录
- /usr/local/bin:本地安装的用户命令目录
- /usr/sbin:系统管理命令目录
- /usr/bin:系统默认的用户命令目录
- /sbin:系统启动相关的管理命令目录
- /bin:系统基础命令目录
PATH环境变量的作用场景
当你输入ls命令时,shell会依次在PATH的各个目录里查找名为ls的可执行文件,最终在/bin目录下找到/bin/ls并执行。如果你自己编写了一个可执行脚本,想直接输入脚本名就能运行,就需要把脚本所在的目录添加到PATH中,或者把脚本放到PATH已经包含的目录里。
如果输入的命令不在PATH的任何目录中,shell就会返回command not found的错误,比如你下载了一个第三方的二进制程序放在/opt/myapp目录下,直接输入程序名就会报错,这时候就需要配置PATH。
临时修改PATH环境变量
临时修改只对当前shell会话有效,关闭终端后配置就会失效,适合临时测试使用。修改方式是在终端执行下面的命令:
# 将/opt/myapp目录添加到PATH开头,优先查找该目录的命令 export PATH=/opt/myapp:$PATH # 或者添加到PATH末尾,最后查找该目录的命令 export PATH=$PATH:/opt/myapp
执行后可以通过echo $PATH确认修改是否生效,这时候直接输入/opt/myapp目录下的程序名就可以直接运行了。
永久修改PATH环境变量
永久修改需要把配置写入shell的配置文件,不同shell的配置文件不同,常见的bash shell的配置文件是~/.bashrc或者~/.bash_profile,系统级的配置可以写入/etc/profile或者/etc/environment。
针对当前用户的配置
编辑当前用户的~/.bashrc文件,在文件末尾添加下面的内容:
# 添加自定义程序目录到PATH export PATH=$PATH:/opt/myapp
保存后执行下面的命令让配置生效:
source ~/.bashrc
针对所有用户的系统级配置
编辑/etc/profile文件,在末尾添加同样的export命令,所有用户登录后都会加载这个配置。如果是修改/etc/environment文件,不需要写export,直接添加路径即可:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/myapp"
修改后需要重启系统或者重新登录才能让配置生效。
PATH配置注意事项
- 不要直接覆盖PATH的值,比如写成
export PATH=/opt/myapp,这样会把系统默认的命令目录都覆盖掉,导致ls、cd等基础命令都无法使用。 - 添加路径时要写绝对路径,不要写相对路径,否则切换目录后配置就会失效。
- 如果误删了PATH导致基础命令无法使用,可以临时用绝对路径执行命令恢复配置,比如
/bin/export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin。
PATH环境变量是Linux系统命令执行的基础配置,合理的PATH配置能提升命令使用效率,修改时一定要注意备份原有配置,避免造成系统命令无法使用的问题。