如何从命令行查找应用程序的路径?

And*_*ind 147 terminal system-calls

例如,我已经git安装在我的系统上。但我不记得我在哪里安装它,那么哪个命令适合找出这个?

Arc*_*ege 169

如果它在您的路径中,那么您可以运行type gitwhich git。该which命令在获取正确路径时遇到问题(环境文件和点文件之间的混淆)。对于type,您可以获得带有-p参数的路径。

如果它不在您的路径中,那么最好使用locate -b git 它来查找它,它会找到任何名为“git”的内容。这将是一个很长的列表,所以用locate -b git | fgrep -w bin.

  • 我无休止地使用 `locate`(它非常快),但对于那些不知道它的人来说,`locate` 只与它最近的数据库更新一样最新,它每天在我的 Ubuntu 上自动运行。*refresh* 命令是 `sudo updatedb` ... 而且 `locate` 具有内置的正则表达式功能,所以像这样的命令有效:`locate -br "^git$"` ... -b` 意味着限制搜索只搜索 *basename* ... 或不带 `-b`,它会搜索完整的路径名 .. 此外,它只搜索您将其配置为搜索的路径 .. 除了您的正则表达式过滤器。 (14认同)
  • 更喜欢“type”而不是“which”。[`which` 很容易混淆](http://unix.stackexchange.com/questions/10525/how-to-use-which-on-an-aliased-command)。 (9认同)

Ric*_*sen 55

执行此操作的POSIX 标准方法是command -v git. 所有类 UNIX 系统都应该支持这一点。


Han*_* N. 21

whereis git 然后你得到命令的路径。

那只是如果 git 在你的 PATH 变量中,如果你不是通过你的包管理器安装它,它会更复杂,你应该使用findorlocate命令。

  • @Nikhil `type`,而不是 `which`。请参阅[如何在别名命令上使用`which`?](http://unix.stackexchange.com/q/10525) (5认同)

Tim*_*edy 16

这里的其他答案似乎主要面向现代版本的 Linux,因此如果您碰巧git在没有locate, whereis, which, 或apropos(如 Solaris、HPUX 等)的操作系统上使用,那么总会有旧的 Standby find

find / -name git 
Run Code Online (Sandbox Code Playgroud)

上面列出的一些旧版本的系统,您可能需要-print提供一个选项find

find / -name git -print
Run Code Online (Sandbox Code Playgroud)

如果您确实使用了locate,请确保updatedb定期运行。(locate.updatedb在一些 BSD 衍生品上)

  • 对于路径中的程序,[使用`type`](http://unix.stackexchange.com/questions/16693/what-is-the-best-way-to-detect-from-a-script-whether-software -已安装);它可靠且便携(除了 30 年的旧系统)。 (8认同)

小智 5

要获取已安装程序的路径,您可以使用whereiswhich。如果您碰巧忘记了它的名称,您可以使用apropos您的实用程序的同义词或描述,例如apropos "version control"will find git。接下来当然是whatis简要总结程序功能的命令。然而,这并不适用于您系统上的所有程序和功能。例如尝试whatis "the meaning of life, universe and everything"