wherece 和 which 有什么不同?

shi*_*ish 13 debian which

我读了`which`,但我无法真正理解其中的区别。我在 64 位 debian-buster 上运行 zsh 5.4.2。which 和 wherece 都是 shell-builtins 。

人们能否指出哪里比哪一个更合适,反之亦然?

/home/shirish> zsh --version
zsh 5.4.2 (x86_64-debian-linux-gnu)

/home/shirish> type -a which
which is a shell builtin
which is /usr/bin/which
which is /bin/which

/home/shirish> type -a whence
whence is a shell builtin
Run Code Online (Sandbox Code Playgroud)

Sté*_*las 18

which是一个 csh 命令(以及csh读取您的 的脚本~/.cshrc),whence是 Korn shell 对csh's的回答whichtypeBourne shell的回答,command -v/VPOSIX的回答...

zsh使用一些扩展实现ksh's whence,但也为whichcsh 瘾君子和type/command -v/V为 POSIX 合规性提供了一个别名,它们只是相同的命令,但具有不同的默认行为。

  • whichwhence -cc对于csh
  • typewhence -v(更详细whence
  • wherewhence -ca
  • POSIXcommand -v就像whence
  • POSIXcommand -V就像whence -v

您会在为什么不使用“which”?那用什么?


小智 1

whence [ -vcfpam ] name ... 对于每个名称,指示如果用作命令名称将如何解释它。该-v标志会生成更详细的报告。该-c标志以类似 csh 的格式打印结果,并优先于-v。该-f标志导致显示 shell 函数的内容,除非-c使用该标志,否则不会发生这种情况。该-p标志对名称进行路径搜索,即使它是别名、保留字、shell 函数或内置函数。该-a标志搜索整个命令路径中所有出现的名称。使用该-m标志,参数将被视为模式(应加引号),并显示与这些模式之一匹配的每个命令的信息。

其中 [ -pam ] 名称 ... 与 -c 相同。

你应该检查zsh 手册