Linux中which命令的使用

Posted by Geuni's Blog on December 28, 2021

which命令用于查找并显示给定命令的绝对路径,该命令在PATH环境变量中列出的目录中搜索指定为参数的可执行文件。也就是说,使用which命令可以查看某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

PATH是什么

在Linux中,PATH是一个环境变量,它告诉Shell和其他程序应该到哪些目录搜索可执行文件。 它由指向包含可执行文件的目录的绝对路径的列表组成,由冒号分隔。 要查看PATH变量的内容,可使用echo命令:

1
echo $PATH

有如下输出内容

Linux中which命令的使用

如何使用which命令

基本的which命令的语法如下:

1
which [OPTIONS] FILE_NAME...

例如,想要查找ping命令的绝对路径,可使用如下命令:

1
which ping

输出如下

Linux中which命令的使用

还可使用多个参数

1
which netcat uptime

输出:

Linux中which命令的使用

搜索从左到右进行,如果在PATH变量中列出的目录中找到多个匹配项,则仅打印第一个。 要打印所有匹配项,要使用-a选项:

1
which -a touch

可以看到它有两个绝对路径

Linux中which命令的使用

通常,其中一个可执行文件只是与另一个可执行文件的符号链接,但是在某些情况下,也有可能是在不同位置安装了同一命令的两个版本,或者也有可能是只是名称一样的完全不同的命令。

如果查的是Linux内建命令,则有可能不会有输出,不过有些发行版还是会有相关提示的。

如macOS,输入:

1
which echo

会提示:

1
echo: shell built-in command

在环境变量PATH指定的目录中搜索可执行文件,可以使用which命令来查找命令。