我想查找Linux中命令的文件路径,例如
ls
的文件路径为/bin/ls
。怎样能够找到一些命令的确切路径?which <progName>
可以实现此功能。你也可以尝试以下命令:whereis -b <progName>
progName
的路径。例如,在我的机器上运行whereis -b gcc
会返回:gcc: /usr/bin/gcc /usr/lib/gcc /usr/bin/X11/gcc
/bin/gcc
和/usr/bin/gcc
(它们都是链接,经过多次链接后指向实际程序/usr/bin/x86_64-linux-gnu-gcc-9
),但前者没有列在whereis gcc
中。 - alx - recommends codidact您可以使用which
命令,它会给出命令的路径:
$ which ls
/bin/ls
type
: $ type ls
ls is /bin/ls
type
命令非常出色,它通常是一个内置命令,如果 POSIX 没有提供,则可以使用 type -p
(如果该选项可用)返回修剪后的结果,该结果可以被分配并用作命令。例如:myprog=$(type -p someexename)
。 - David C. Rankinwhich
命令。如果在你的$PATH
中有该命令,它将显示完整路径:mureinik@computer ~ $ which cp
/usr/bin/cp
mureinik@computer ~ $ which ls
alias ls='ls --color=auto'
/usr/bin/ls
是的,您可以使用which
命令找到它。
which <command>
eg which cat
/bin/cat
which
,因为它不一定会执行您所期望的操作。以下是两个示例,结果可能与您期望的不同:echo
的示例: which echo
输出将会是/usr/bin/echo
,但如果您在bash脚本中使用echo
命令,则不会执行/usr/bin/echo。相反,将执行内置命令echo
,它的行为类似,但并非完全相同。
(2) 使用zsh和which
命令的示例:
which which
会输出消息which: shell内置命令
(这是正确的,但肯定不是您请求的文件路径),而
/usr/bin/which which
这会输出文件路径/usr/bin/which
,但是(如bash示例中所示),当你只输入which
时,这不是正在执行的内容。
有些情况下,你可以肯定地知道(因为你了解你的应用程序),which
将产生正确的结果,但请注意,一旦涉及到内置命令、别名和shell函数,你需要先决定如何处理这些情况,然后选择适合你所使用的shell类型的工具。
which ls
。 - bansi