我知道当你在shell上时,可以使用的唯一命令是可以在PATH上设置的某个目录中找到的命令。 即使我不知道如何看到我的PATH变量上的dirs(这是另一个可以回答的好问题),我想知道的是:
我来到贝壳并写道:
$ lshw
我想知道shell上的一个命令可以告诉我这个命令的位置。换句话说,这个“可执行文件”位于何处?
类似的东西:
$ location lshw
/usr/bin
任何?
答案 0 :(得分:149)
如果您使用的是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
没有)。
答案 1 :(得分:52)
像这样:
which lshw
答案 2 :(得分:17)
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
答案 3 :(得分:5)
~$ echo $PATH
/home/jack/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
~$ whereis lshw
lshw: /usr/bin/lshw /usr/share/man/man1/lshw.1.gz
答案 4 :(得分:1)
在TENEX C Shell中, tcsh ,可以使用where
命令列出命令的位置,或者它是否是内置命令例如:
tcsh% where python
/usr/local/bin/python
/usr/bin/python
tcsh% where cd
cd is a shell built-in
/usr/bin/cd
答案 5 :(得分:0)
Korn shell ksh
提供whence
内置函数,用于标识其他shell内置函数,宏等。which
命令更具可移植性。 / p>
答案 6 :(得分:0)
type -a
的替代方法是command -V
由于大多数时候我只对第一个结果感兴趣,所以我也从头开始。这样,在使用bash函数的情况下,屏幕不会充满代码。
command -V lshw | head -n1
答案 7 :(得分:0)
使用:whereis -b lshw
。
使用 whereis
命令。从man page:
whereis
- 查找命令的二进制文件、源文件和手册页文件
此外,您可以指定您要查找的内容:
whereas -b packagename
:二进制文件位置的来源。whereas -m packagename
:手册位置来源。whereas -s packagename
:源代码位置的来源。就您而言,由于您正在寻找二进制文件,因此您需要:whereis -b lshw
。
此命令还有其他开关,请在 man page. 处查看它们。如果没有与包名关联的文件,您将看到一个空行。
以下是一些实际用途:
holdoffhunger@tower:~$ whereis grep
grep: /bin/grep /usr/share/man/man1/grep.1.gz /usr/share/man/man1/grep.1posix.gz
holdoffhunger@tower:~$ whereis -m grep
grep: /usr/share/man/man1/grep.1.gz /usr/share/man/man1/grep.1posix.gz
holdoffhunger@tower:~$ whereis -s grep
grep: