对于内置“type”,“-P”与“-ap”相同吗?

对于内置“type”,“-P”与“-ap”相同吗?

来自 Bash 手册

type [-afptP] [name ...]

对于每个名称,请指出如果用作命令名称,将如何解释它。

如果使用 -p 选项,则 type 要么返回将要执行的磁盘文件的名称,如果 -t 不返回“file”,则不返回任何内容。

-P 选项强制对每个名称进行路径搜索,即使 -t 不会返回“文件”。

如果命令经过哈希处理,-p 和 -P 会打印哈希值,该值不一定是 $PATH 中首先出现的文件。

如果使用 -a 选项,则type返回包含名为的可执行文件的所有位置file。当且仅当未使用 -p 选项时,这包括别名和函数。

  1. file“如果使用 -a 选项,type则返回包含名为文件“ 意思是name 代替?

  2. -P相同的-ap

谢谢。

答案1

  1. 很有可能,是的。
  2. 不完全的。因此 的用例-P很清楚:-P可以用作“更强” -p。例如:

    $ type [ [ is a shell builtin

    $ type -p [

    在上面,type -p [没有返回任何内容,因为type -t [说(这是有道理的,毕竟builtin手册说这样做是这样的)。-p

    然而:

    $type -P [ /usr/bin/[

    该标志-P强制搜索在PATH变量内,因此我们得到一些输出。


也就是说,在我的系统上,它们输出的重复项数量有所不同type -ap。,例如,产生三次,而只给我一行。这很可能是因为 /usr/bin 符号链接到几个不同的地方。还有一个(微妙的)区别:type -Ptype -ap echo/usr/bin/echotype -P echo

如果使用 -a 选项,则 type 返回所有包含可执行文件命名为file.当且仅当-p未同时使用该选项时,这包括别名和函数。

所以,如果我这样做了sudo touch /bin/bogustype -P bogus我会很高兴地返回/usr/bin/bogus,但type -ap bogus什么也没有给我。

相关内容