在Linux系统中,直接输入命令如ls
而没有指定命令的绝对路径/usr/bin/ls
,系统也能正确的执行,这是因为 环境变量 PATH 的作用,它指定系统在执行命令时搜索可执行文件的路径。
本文主要介绍在 CentOS 7.x 中关于环境变量 PATH 的说明与配置
环境变量 PATH
当用户在终端输入一个命令时,系统会在 PATH 指定的路径中查找该命令的可执行文件。如果找到了,就会执行该命令;如果没有找到,则会提示"命令不存在"的错误信息。
查看环境变量 PATH
bash
# 输入命令
echo $PATH
# 可能返回以下内容
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PATH(大写)环境变量 是一个由冒号分隔 的目录列表 ,每个目录有顺序之分。当用户在命令行输入一个命令时,系统会按照这个列表的顺序去查找这个命令的可执行文件。
例如 PATH 的值是 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
,那么 系统会首先在 /usr/local/sbin
目录下查找命令,如果没找到,再到 /usr/local/bin
目录下查找,以此类推。
修改环境变量 PATH
bash
# 输入命令
vim ~/.bash_profile
# 文件末尾添加export PATH=$PATH:/自定义目录路径,以下为示例
export PATH=$PATH:/home/mybin
# 使环境变量生效
source ~/.bash_profile
# 查看环境变量
echo $PATH
# 可能返回以下内容,新加的目录已生效
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/home/mybin
注意事项
- 不同身份的用户默认环境变量 PATH 不同
- 环境变量 PATH 是可以被修改的
- 在不确定的情况下,使用绝对路径来指定某个命令更为准确
- 在添加自定义目录前,先检查该目录下是否存在与系统命令同名的可执行文件,以免发生冲突,导致系统命令被覆盖或无法正常工作。
- 谨慎添加不受信任的目录到环境变量 PATH 中,特别是具有系统级权限的目录,这可能会导致恶意软件被执行或系统安全受到威胁。