请简述Which 和 whereis 区别 ?
参考回答
which
和 whereis
都是用于查找命令路径的 Linux 命令,但它们的功能和使用方式有所不同。
which
命令:- 用于查找并显示某个命令的路径(即该命令的可执行文件的位置)。
- 它查找的是当前环境变量
PATH
中定义的路径。 - 只显示第一个匹配的可执行文件路径。
示例:
which python
输出示例:
/usr/bin/python
whereis
命令:- 用于查找命令的二进制文件、源代码文件和帮助文件的位置。
- 它会搜索预定义的目录,而不仅仅是
PATH
中的路径。 whereis
提供更广泛的信息,不仅包括命令的路径,还包括源文件和手册页的位置。
示例:
whereis python
输出示例:
python: /usr/bin/python /usr/share/man/man1/python.1.gz
详细讲解与拓展
which
命令:which
命令只会显示可执行文件的位置,它会按照环境变量PATH
中的路径顺序来查找。如果命令在PATH
中的多个位置都存在,which
只会返回第一个找到的路径。- 它只查找并显示执行文件的位置,不会返回其他相关信息(如配置文件或手册页)。
示例:
查找ls
命令的位置:which ls
输出:
/bin/ls
如果想查看某个程序的路径,
which
是一个简单而快速的方式。-
whereis
命令:whereis
命令比which
更强大,不仅查找命令的可执行文件,还会查找源代码文件和手册页等相关文件。- 它默认会在一组特定的目录中查找,而不只是
PATH
环境变量定义的路径。 whereis
查找的目录是预定义的,通常包括/usr/bin/
、/usr/local/bin/
、/usr/include/
、/usr/share/man/
等目录。
示例:
查找gcc
命令的相关文件:whereis gcc
输出:
gcc: /usr/bin/gcc /usr/lib/gcc /usr/share/man/man1/gcc.1.gz
在这个例子中,
whereis
命令返回了gcc
的二进制文件路径、库路径和手册页路径。
区别总结:
which
:用于查找并显示指定命令的可执行文件路径,只搜索PATH
环境变量中的路径。whereis
:用于查找命令的可执行文件、源代码文件和手册页,搜索的路径更广泛,不限于PATH
。
which
更侧重于显示命令执行文件的路径,而 whereis
提供更全面的信息,包括可执行文件、源代码和文档等。