“哪个”有一个bash内build的?

我一直在testing一个最小的Fedora安装。 为了检查像python或node这样的解释器的path,我通常使用which

我注意到which没有默认安装。 我可以添加这个包,但是我想知道是否有一个shell可以用来完成这个常见的任务。

我使用bash 4.2。

    你可以使用type ,这是一个Bash内build的:

     $ type -P which which is /usr/bin/which 

    有关文档,请参阅help [t]ype type help [t]ype ,它指向bash手册页中的type部分。

    help type打印两个 内build的帮助页面, 以 “type” string开头 ,其中一个已经过时并且与此完全无关。)

    您可以使用typecommand -vtype的输出是人类可读的; command -v的输出可以由Bash执行。

    请注意,它们实际上有些不同。 typecommand查找command的哈希值。 也就是说,如果你inputcmdtype cmd或者command -v cmd会告诉你到底会运行什么。 他们也使用别名,Bash函数和Bash内build函数(尽pipetype -p会忽略这些,只返回true文件)。

    只是在PATH上进行search。 这是不同的,因为:

    • 如果有一个别名,函数或内置的同名,它将被调用。
    • 如果一个命令在PATH之前被添加了,那么它将会被发现,但是执行该命令将使用散列值(你可以使用hash -r强制更新Bash中的hash -r )。

    通常人们真的想要type ,而不是至less在交互式使用的时候,因为他们用它来找出“当我运行它时这个命令来自哪里? 你应该只使用which如果你真的想做一个path查找。