在 zsh 上获得与在 bash 上执行 `type -t` 时得到的结果相同的结果吗?

yiv*_*ivi 2 bash zsh

我有使用 的 shell 脚本type -t,但显然它最初是为bash编写的,而在这台机器上我使用的是zsh,因此它不起作用。

我看到 bash 文档type -t

如果使用 -t 选项,则 type 打印一个单词,它是“别名”、“函数”、“内置”、“文件”或“关键字”之一,如果名称是别名、shell 函数、shell 内置、磁盘文件,或外壳保留字,分别。如果未找到名称,则不打印任何内容,并且 type 返回失败状态。

但是在 zsh 中,type不接受该-t选项,它实际上别名为whence

输入 [ -fpam ] name ... 与 wherece -v 相同。

从哪里来:

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

其中不包括所需的输出。一种在zsh上获得 en 等效结果的方法?换壳不是这台机器的选项。

J.M*_*les 7

由于zsh 中的wherece -w和bash 中的type -t 的输出是类似的(下表是根据个人测试制作的,因此我建议谨慎使用)

type -t    whence -w
alias      alias
function   function
builtin    builtin
file       command
keyword    reserved
?          hashed
?          none
Run Code Online (Sandbox Code Playgroud)

在 zsh 中创建一个模仿 bash 中 -t 类型行为的脚本似乎并不难。你甚至可以,例如通过别名,用你在 zsh 中的命令替换zsh 中的内置类型