which – Find and display the absolute path of a given command

The which command is a Linux utility that is used to locate the executable file associated with a given command by searching through the directories listed in the PATH environment variable. The which command is very useful in situations where you need to know the exact location of a command, especially when you are working with multiple versions of the same command.

Overview

The syntax for the which command is as follows:

which [options] [command]

Where options are any of the available options for the which command, and command is the name of the command that you want to find the location of.

For example, to find the location of the ls command, you would run the following command:

which ls

This will return the absolute path of the ls command, which is usually /bin/ls.

You can also use the which command to find the location of a command that is not in your PATH environment variable by specifying the full path to the command:

which /usr/local/bin/mycommand

This will return the full path to the mycommand executable file.

Options

The following table lists the available options for the which command:

Option Description
-a Displays all matches for the command, rather than just the first one.
-i Ignores case when searching for the command.
-n Displays the locations of the executable files, without running them.
-p Changes the default PATH environment variable to the specified path.
-V Displays the version number of the which command.
--skip-alias Skips any aliases and functions that may be defined for the command.
--skip-functions Skips any functions that may be defined for the command.

Troubleshooting tips

If the which command does not return the expected result, there are a few things that you can try:

  • Check your PATH environment variable to make sure that the directory containing the command is included.
  • Check that the command is actually installed on your system.
  • Try using the locate command to search for the command if it is not in your PATH environment variable.

Notes

  • The which command only searches for executable files, not shell built-ins or aliases.
  • The which command can be used in shell scripts to check for the existence of a command before attempting to run it.