在Linux系统中,which和whereis是两个常用的命令行工具,它们都可以帮助用户查找程序或命令的位置。然而,这两个命令的功能和使用场景有所不同。下面将详细介绍两者的区别,并通过实践演示如何使用它们。
which 命令which 命令用于查找可执行文件的路径。它会搜索环境变量 $PATH 中列出的目录,找到与给定命令名称匹配的可执行文件。
$PATH 环境变量中的目录。which 默认只返回第一个找到的路径(除非使用 -a 参数)。# 查找 'ls' 命令的路径
which ls
输出可能为:
/usr/bin/ls
如果想查看所有匹配的路径(即使有多个),可以使用 -a 参数:
which -a python
whereis 命令whereis 命令不仅能够查找可执行文件,还能同时定位源代码文件和帮助文档的位置。它通常用于查找系统自带的命令或工具。
$PATH 环境变量,而是根据自身的数据库进行查找。# 查找 'gcc' 的相关信息
whereis gcc
输出可能为:
gcc: /usr/bin/gcc /usr/lib/gcc /usr/share/man/man1/gcc.1.gz
这表示找到了 gcc 的可执行文件路径 /usr/bin/gcc,库文件路径 /usr/lib/gcc,以及手册页路径 /usr/share/man/man1/gcc.1.gz。
确保你已经登录到一个 Linux 或类 Unix 系统。
which 和 whereis我们可以选择一个常见的命令如 ls 进行测试:
# 使用 which 查找 ls
which ls
# 使用 whereis 查找 ls
whereis ls
观察输出结果的不同:
which ls 只会返回 /usr/bin/ls。whereis ls 可能返回类似 /usr/bin/ls /usr/share/man/man1/ls.1.gz,包含了可执行文件和手册页路径。从上述实验可以看出,which 更专注于查找 $PATH 中的可执行文件,而 whereis 提供了更全面的信息,包括源代码和文档的位置。
which 来查找当前环境下的可执行文件路径。whereis 来查找系统命令的可执行文件、源代码及文档位置。