Linux / Unix: which Command Examples To Find Out A Program File

Posted on in Categories , , , , , last updated February 18, 2014
which command

I am a new Linux and Unix-like system user. How do I find out gcc compiler path on Linux? How can I locate a program file in path on Linux or Unix-like systems?

The which command shows the full path for each of its given arguments. This command searchers for an executable or script in the user’s PATH.

which command details
DescriptionLocate a program file
Root privilegesNo
Estimated completion time5m
I often use which command to find the executable file associated with a given command name.


Display the full path of shell commands.


The basic syntax is as follows:

which command


which [option] command


which prgoram

which command examples

To find the executable file associated with a command name of date:
$ which date

To find the executable file associated with a command name of httpd, top, and ls, type:
$ which httpd top ls

How can I list all instances of executables found?

Pass the -a option to the which command as follows:
$ which -a command
$ which -a ls

Sample outputs:
which command demo

which command options

From the which(1) command man page:

--skip-dotSkip directories in PATH that start with a dot.
--skip-tildeSkip directories in PATH that start with a tilde.
--show-dotDon’t expand a dot to current directory in output.
--show-tildeOutput a tilde for HOME directory for non-root.
--tty-onlyStop processing options on the right if not on tty.
-aPrint all matches in PATH, not just the first
-iRead list of aliases from stdin.
--skip-aliasIgnore option -i; don’t read stdin.
--read-functionsRead shell functions from stdin.
--skip-functionsIgnore option –read-functions; don’t read stdin.

On Linux bash defined which as function as follows:

which ()
   (alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot $@
export -f which

tcsh / csh user can create an alias as follows:

alias which 'alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

In the Korn shell, you can use the whence command for the same purpose:
$ whence ls
$ whence date httpd ls

See also
  • which(1)
CategoryList of Unix and Linux commands
File Managementcat
Network Utilitiesdighostip
Package Managerapkapt
Processes Managementbgchrootdisownfgjobskillkillallpwdxtimepidofpstree
User Informationgroupsidlastlastcommlognameuserswwhowhoamilidmembers

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

Leave a Comment