首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Shell -如何找到某些命令的目录?

Shell -如何找到某些命令的目录?
EN

Stack Overflow用户
提问于 2010-05-20 04:21:55
回答 6查看 135.9K关注 0票数 162

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

我来到shell并写道:

代码语言:javascript
复制
$ lshw

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

类似于:

代码语言:javascript
复制
$ location lshw
/usr/bin

有没有人?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-05-20 09:14:12

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

代码语言:javascript
复制
type -a lshw

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

代码语言:javascript
复制
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中,for functions type -a还将显示函数定义。您可以使用declare -f functionname来做同样的事情(您必须对zsh使用它,因为type -a没有使用它)。

票数 227
EN

Stack Overflow用户

发布于 2010-05-20 04:23:45

如下所示:

代码语言:javascript
复制
which lshw

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

代码语言:javascript
复制
which -a lshw 
票数 79
EN

Stack Overflow用户

发布于 2010-05-20 04:28:35

PATH是一个环境变量,可以使用echo命令显示:

代码语言:javascript
复制
echo $PATH

它是由冒号字符':‘分隔的路径列表

which命令告诉您在运行命令时将执行哪个文件:

代码语言:javascript
复制
which lshw

有时,您得到的是符号链接的路径;如果您希望跟踪该链接到实际可执行文件所在的位置,则可以使用readlink并将which的输出提供给它

代码语言:javascript
复制
readlink -f $(which lshw)

-f参数指示readlink递归地跟踪符号链接。

下面是我的机器上的一个例子:

代码语言:javascript
复制
$ which firefox
/usr/bin/firefox

$ readlink -f $(which firefox)
/usr/lib/firefox-3.6.3/firefox.sh
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2869100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档