which/whereis 区别

which/whereis 区别

which和有什么区别whereis

答案1

如何学习whereiswhich使用whatis

$  whatis which
which                (1)  - shows the full path of (shell) commands

$  whatis whereis
whereis              (1)  - locate the binary, source, and manual page files for a command

基本上,whereis搜索“可能有用”的文件,而which仅搜索可执行文件。

我很少使用whereis。另一方面,which非常有用,特别是在脚本中。which是以下问题的答案:这个命令从哪里来的?

$  which ls
/bin/ls

$  whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.bz2 /usr/share/man/man1/ls.1.bz2

答案2

whereis在标准 *nix 位置中搜索指定的命令。

which搜索用户特定的 PATH(可能包括 whereis 搜索的某些位置,但可能不包括其他位置 -whereis如果已添加到 PATH,还可能包括一些不搜索的位置)

答案3

引用他们的手册页:

哪里

whereis 定位指定文件的源/二进制和手册部分。

例如 :

$ whereis php
php: /usr/bin/php /usr/share/php /usr/share/man/man1/php.1.gz

即“php”可执行文件,以及一些其他内容(例如手册页)。


哪个

返回将在当前环境中执行的文件的路径名

例如 :

$ which php
/usr/bin/php

即,只有“php”可执行文件。

答案4

我想分享一下我最近学到的东西苹果MacOSX Mojave;可以肯定它适用于过去几年中 Apple macOS 的多个版本:

在莫哈韦:

  • whereis搜索可执行文件仅有的在字符串定义的路径中user.cs_path;进一步定义为:/usr/bin:/bin:/usr/sbin:/sbin

  • whereis显示器无信息在任何系统文档(即man页面)上。

  • 在某些系统上,sysctl可能用于“设置或获取内核状态”,但 Apple 已已弃用-w, --write改变user.cs_path使用的选项sysctl

  • 实际上,苹果公司已经不再负责whereis报告他们向客户提供的 10 到 20 年前的工具的所在位置user.cs_path

  • 所有这些可能会使苹果是whereis这个星球上最无用的实用程序。

如果你感兴趣的话:)

相关内容