which(1)

which1

Locate a program file in the user's path

Usage

which [-as] program ...

Overview

The which utility takes a list of command names and searches the path for each executable file that would be run had these commands actually been invoked.

The following options are available:

-a

List all instances of executables found (instead of just the first one of each).

-s

No output, just return 0 if all of the executables are found, or 1 if some were not found.

Some shells may provide a builtin which command which is similar or identical to this utility. Consult the builtin(1) manual page.

Examples

Locate the ls(1) and cp(1) commands:

$ /usr/bin/which ls cp
/bin/ls
/bin/cp

Same as above with a specific PATH and showing all occurrences:

$ PATH=/bin:/rescue /usr/bin/which -a ls cp
/bin/ls
/rescue/ls
/bin/cp
/rescue/cp

which will show duplicates if the same executable is found more than once:

$ PATH=/bin:/bin /usr/bin/which -a ls
/bin/ls
/bin/ls

Do not show output. Just exit with an appropriate return code:

$ /usr/bin/which -s ls cp
$ echo $?
0
$ /usr/bin/which -s fakecommand
$ echo $?
1

Releases

87 releases since FreeBSD 2.0.5-RELEASE; the text changed 47 times.

  1. 2.0.5
  2. 2.1.5–2.1.7.1
  3. 2.2.2
  4. 2.2.5–2.2.6
  5. 2.2.7–2.2.8
  6. 2.2.9
  7. 3.0–3.2
  8. 3.3–3.4
  9. 3.5–3.5.1
  10. 4.0–4.2
  11. 4.3
  12. 4.4–4.6.2
  13. 4.7–4.9
  14. 4.10–4.11
  15. 5.0–5.5
  16. 6.0–6.3
  17. 6.4
  18. 7.0
  19. 7.1
  20. 7.2
  21. 7.3
  22. 7.4
  23. 8.0
  24. 8.1
  25. 8.2
  26. 8.3
  27. 8.4
  28. 9.0
  29. 9.1
  30. 9.2
  31. 9.3
  32. 10.0
  33. 10.1
  34. 10.2
  35. 10.3
  36. 10.4
  37. 11.0
  38. 11.1
  39. 11.2
  40. 11.3
  41. 11.4
  42. 12.0
  43. 12.1
  44. 12.2
  45. 12.3
  46. 12.4
  47. 13.0–13.2
  48. 13.3–16.0

History

The which command first appeared in FreeBSD 2.1.

Authors

The which utility was originally written in Perl and was contributed by Wolfram Schneider ⟨[email protected]⟩. The current version of which was rewritten in C by Daniel Papasian ⟨[email protected]⟩.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.