我知道当您使用shell时,唯一可以使用的命令是那些可以在PATH上设置的某个目录中找到的命令。即使我不知道如何查看PATH变量上的目录(这是另一个可以回答的好问题),我想知道的是:
我来到shell并写道:
$ lshw
我想知道shell上的一个命令,它可以告诉我这个命令的位置。换句话说,这个“可执行文件”位于何处?
类似于:
$ location lshw
/usr/bin
有没有人?
发布于 2010-05-20 09:14:12
如果您使用的是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中,for functions type -a
还将显示函数定义。您可以使用declare -f functionname
来做同样的事情(您必须对zsh使用它,因为type -a
没有使用它)。
发布于 2010-05-20 04:23:45
如下所示:
which lshw
要查看路径中匹配的所有命令:
which -a lshw
发布于 2010-05-20 04:28:35
PATH
是一个环境变量,可以使用echo命令显示:
echo $PATH
它是由冒号字符':
‘分隔的路径列表
which
命令告诉您在运行命令时将执行哪个文件:
which lshw
有时,您得到的是符号链接的路径;如果您希望跟踪该链接到实际可执行文件所在的位置,则可以使用readlink
并将which
的输出提供给它
readlink -f $(which lshw)
-f
参数指示readlink
递归地跟踪符号链接。
下面是我的机器上的一个例子:
$ which firefox
/usr/bin/firefox
$ readlink -f $(which firefox)
/usr/lib/firefox-3.6.3/firefox.sh
https://stackoverflow.com/questions/2869100
复制相似问题