Shell - How to find directory of some command?
我知道,当您在shell上时,唯一可以使用的命令是可以在路径上的某个目录集上找到的命令。即使我不知道如何查看路径变量上的dirs(这是另一个可以回答的好问题),我想知道的是:
我来到壳牌公司,写下:
1 | $ lshw |
我想知道shell上的一个命令,它可以告诉我这个命令在哪里。换句话说,这个"可执行文件"在哪里?
类似:
1 2 | $ location lshw /usr/bin |
有人吗?
如果您使用的是bash或zsh,请使用:
1 | type -a lshw |
这将显示目标是内置的、函数、别名还是外部可执行文件。如果是后者,它将显示在您的
1 2 3 4 5 6 7 8 9 | 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中,对于函数
这样地:
1 | which lshw |
1 | echo $PATH |
它是由冒号字符"EDOCX1"〔1〕分隔的路径列表。
1 | which lshw |
有时,您得到的是指向symlink的路径;如果您希望跟踪该链接到实际可执行文件所在的位置,则可以使用
1 | readlink -f $(which lshw) |
下面是我的机器的一个例子:
1 2 3 4 5 | $ which firefox /usr/bin/firefox $ readlink -f $(which firefox) /usr/lib/firefox-3.6.3/firefox.sh |
1 2 3 4 | ~$ 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 |
在Tenex C shell(tcsh)中,可以列出命令的位置,或者如果命令是内置命令,则可以使用
1 2 3 4 5 6 7 | tcsh% where python /usr/local/bin/python /usr/bin/python tcsh% where cd cd is a shell built-in /usr/bin/cd |
korn shell,