来自 Bash 手册
type [-afptP] [name ...]
对于每个名称,请指出如果用作命令名称,将如何解释它。
如果使用 -p 选项,则 type 要么返回将要执行的磁盘文件的名称,如果 -t 不返回“file”,则不返回任何内容。
-P 选项强制对每个名称进行路径搜索,即使 -t 不会返回“文件”。
如果命令经过哈希处理,-p 和 -P 会打印哈希值,该值不一定是 $PATH 中首先出现的文件。
如果使用 -a 选项,则
type
返回包含名为的可执行文件的所有位置file
。当且仅当未使用 -p 选项时,这包括别名和函数。
在
file
“如果使用 -a 选项,type
则返回包含名为文件“ 意思是name
代替?是
-P
相同的-ap
?
谢谢。
答案1
- 很有可能,是的。
不完全的。因此 的用例
-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 -P
type -ap echo
/usr/bin/echo
type -P echo
如果使用 -a 选项,则 type 返回所有包含可执行文件命名为
file
.当且仅当-p
未同时使用该选项时,这包括别名和函数。
所以,如果我这样做了sudo touch /bin/bogus
,type -P bogus
我会很高兴地返回/usr/bin/bogus
,但type -ap bogus
什么也没有给我。