which命令用于查找并显示给定命令的绝对路径,该命令在PATH环境变量中列出的目录中搜索指定为参数的可执行文件。也就是说,使用which命令可以查看某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
PATH是什么
在Linux中,PATH是一个环境变量,它告诉Shell和其他程序应该到哪些目录搜索可执行文件。 它由指向包含可执行文件的目录的绝对路径的列表组成,由冒号分隔。 要查看PATH变量的内容,可使用echo命令:
1
echo $PATH
有如下输出内容
如何使用which命令
基本的which命令的语法如下:
1
which [OPTIONS] FILE_NAME...
例如,想要查找ping命令的绝对路径,可使用如下命令:
1
which ping
输出如下
还可使用多个参数
1
which netcat uptime
输出:
搜索从左到右进行,如果在PATH变量中列出的目录中找到多个匹配项,则仅打印第一个。 要打印所有匹配项,要使用-a选项:
1
which -a touch
可以看到它有两个绝对路径
通常,其中一个可执行文件只是与另一个可执行文件的符号链接,但是在某些情况下,也有可能是在不同位置安装了同一命令的两个版本,或者也有可能是只是名称一样的完全不同的命令。
如果查的是Linux内建命令,则有可能不会有输出,不过有些发行版还是会有相关提示的。
如macOS,输入:
1
which echo
会提示:
1
echo: shell built-in command
在环境变量PATH指定的目录中搜索可执行文件,可以使用which命令来查找命令。