Introduction
The Linux which
command will be covered in this tutorial.
When you type the executable name (command) at the terminal prompt in Linux, which
command is used to identify the location of the executable that is executed. The command looks in the folders listed in the PATH
environment variable for the executable supplied as an input.
In this tutorial, you will understand what is which
command in Linux. We will also address a few FAQs on Linux which
Command.
What is PATH
PATH
is a Linux environment variable that instructs the shell and other programs where to look for executable files. It consists of a list of colon-separated absolute paths to the executable folders.
Use the echo command with $PATH
as an input to see the contents of your PATH variable:
echo $PATH
You will get an output like below:
Output
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
How to Use the which Command
The following is the syntax for the which
command:
which [OPTIONS] FILE_NAME...
To find the complete path of the ping command, for example, type the following:
which ping
You will get an output like below:
Output
/bin/ping
You can also use the which
command with many arguments:
which netcat uptime
Full paths to both netcat and uptime executables will be included in the output:
Output
/bin/netcat
/usr/bin/uptime
The search is done from left to right, and if there are several matches in the directories provided in the PATH
path variable, just the first one will be printed. Use the -a
option to print all matches:
which -a touch
Two complete pathways to the touch command will be shown in the output:
/usr/bin/touch
/bin/touch
Normally, one of the executables is only a symlink to the other, but in other circumstances, you might have two versions of the same command installed in different locations, or two completely different programs with the same name.
FAQs on Linux which Command
What does the "which" command display if a command is not found?
If the "which" command cannot locate the specified command, it will not display anything. It will exit silently without any output or error message.
Can the "which" command locate aliases or shell functions?
No, the "which" command is designed to find the location of executable files, such as binaries or scripts. It does not work with aliases or shell functions.
Can the "which" command locate built-in shell commands?
No, the "which" command is not able to locate built-in shell commands. It only works with external executables located in directories listed in the system's PATH variable.
How does the "which" command handle multiple instances of a command?
The "which" command displays the first instance of a command found in the system's PATH variable. If there are multiple instances with the same name, it shows the one with the highest priority.
Can I use the "which" command with wildcards?
No, the "which" command does not support the use of wildcards. It expects an exact command name to locate.
Does the "which" command display all possible locations of a command?
No, the "which" command only displays the first instance found based on the current system's PATH settings. To see all possible locations, you can use the "whereis" command or "find" command.
Is the "which" command case-sensitive?
No, the "which" command is not case-sensitive. It can locate commands regardless of their case. For example, "which LS" and "which ls" will produce the same output.
Conclusion
The which
command locates a command by looking for its executable in the directories supplied by the PATH
environmental variable.
If you have any queries, please leave a comment below and we’ll be happy to respond to them.