请简述Which 和 whereis 区别 ?

参考回答

whichwhereis 都是用于查找命令路径的 Linux 命令,但它们的功能和使用方式有所不同。

  1. which 命令
    • 用于查找并显示某个命令的路径(即该命令的可执行文件的位置)。
    • 它查找的是当前环境变量 PATH 中定义的路径。
    • 只显示第一个匹配的可执行文件路径。

    示例

    which python
    

    输出示例:

    /usr/bin/python
    
  2. whereis 命令
    • 用于查找命令的二进制文件、源代码文件和帮助文件的位置。
    • 它会搜索预定义的目录,而不仅仅是 PATH 中的路径。
    • whereis 提供更广泛的信息,不仅包括命令的路径,还包括源文件和手册页的位置。

    示例

    whereis python
    

    输出示例:

    python: /usr/bin/python /usr/share/man/man1/python.1.gz
    

详细讲解与拓展

  1. which 命令
    • which 命令只会显示可执行文件的位置,它会按照环境变量 PATH 中的路径顺序来查找。如果命令在 PATH 中的多个位置都存在,which 只会返回第一个找到的路径。
    • 它只查找并显示执行文件的位置,不会返回其他相关信息(如配置文件或手册页)。

    示例
    查找 ls 命令的位置:

    which ls
    

    输出:

    /bin/ls
    

    如果想查看某个程序的路径,which 是一个简单而快速的方式。

  2. 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 提供更全面的信息,包括可执行文件、源代码和文档等。

发表评论

后才能评论