如何找到某个命令的目录?

新手上路,请多包涵

我知道当你在 shell 上时,唯一可以使用的命令是那些可以在 PATH 上设置的某个目录中找到的命令。即使我不知道如何查看我的 PATH 变量上的目录(这是另一个可以回答的好问题),我想知道的是:

我来壳写:

 $ lshw

我想知道 shell 上的一个命令,它可以告诉我这个命令的位置。换句话说,这个“可执行文件”在哪里?

就像是:

 $ location lshw
/usr/bin

原文由 Gabriel L. Oliveira 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 331
2 个回答

如果您使用的是 Bash 或 zsh,请使用以下命令:

 type -a lshw

这将显示目标是内置、函数、别名还是外部可执行文件。如果是后者,它将显示它出现在您的 PATH 中的每个位置。

 bash$ type -a lshw
lshw is /usr/bin/lshw
bash$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls
bash$ zsh
zsh% type -a which
which is a shell builtin
which is /usr/bin/which

在 Bash 中,对于函数 type -a 也会显示函数定义。你可以使用 declare -f functionname 来做同样的事情(你必须对 zsh 使用它,因为 type -a 没有)。

原文由 Dennis Williamson 发布,翻译遵循 CC BY-SA 2.5 许可协议

像这样:

 which lshw

要查看路径中匹配的所有命令:

 which -a lshw

原文由 Ignacio Vazquez-Abrams 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题