- 功能概述
- whereis命令
- whereis主要用于查找二进制文件、源代码文件和手册页文件的位置。它会在特定的目录列表中查找,这些目录包括二进制文件目录(如/bin、/sbin、/usr/bin、/usr/sbin等)、源代码目录(如/usr/src)和手册页目录(如/usr/share/man)等。
- which命令
- which主要用于查找可执行文件的位置,并且是在系统的环境变量
P
A
T
H
所定义的路径中查找。
PATH所定义的路径中查找。
PATH所定义的路径中查找。PATH是一个包含一系列目录的环境变量,当在命令行输入一个命令时,系统会根据$PATH中的目录顺序来查找对应的可执行文件。
- 输出内容差异
- whereis命令
- 例如,当执行
whereis ls
时,可能会输出类似如下的结果:
ls: /bin/ls /usr/share/man/man1/ls.1.gz
- 它不仅会显示可执行文件
ls
在/bin
目录下的位置,还会显示与ls
相关的手册页文件(如果存在)在/usr/share/man/man1/ls.1.gz
的位置等。
- which命令
- 当执行
which ls
时,输出结果可能为:/bin/ls
。它只会显示可执行文件ls
在PATH
环境变量所定义的搜索路径中的第一个匹配位置。
- 搜索范围区别
- whereis命令
- 搜索范围是预定义的一些系统目录,这些目录包含了二进制文件、源代码文件和手册页文件的常见存放位置,不受$PATH环境变量的影响。
- which命令
- 搜索范围严格限制在
P
A
T
H
环境变量所指定的路径中。如果某个可执行文件不在
PATH环境变量所指定的路径中。如果某个可执行文件不在
PATH环境变量所指定的路径中。如果某个可执行文件不在PATH所定义的目录中,which命令将无法找到它,即使该文件存在于系统的其他目录中。
- 使用场景
- whereis命令
- 当需要查找一个命令相关的二进制文件、源代码文件以及手册页文件的位置时,可以使用whereis命令。例如,在开发过程中,想要找到某个命令的源代码或者查看是否有对应的手册页文件时,whereis就很有用。
- which命令
- 当只想确定一个在命令行中可直接执行的命令的具体位置(特别是在$PATH所定义的路径中)时,使用which命令。例如,当遇到命令执行问题,怀疑是执行了错误路径下的命令时,可以用which来确认正在执行的是哪个目录下的命令。