---
name: "which"
section: "1"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["linux", "freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/which"
---

# which(1)

locate a program file (or files) in the path

## NAME

**which** – locate a program file (or files) in the path

## SYNOPSIS

**which** \[**-a**\] *name* *...*

## DESCRIPTION

**which** takes a list of names and looks for the files which would be executed had these names been given as commands. Each argument is searched for along the user's path.

If the **-a** flag is given, **which** will return a list of all matches instead of just the first match.

## ENVIRONMENT

The following environment variables affect the execution of **which**:

- PATH

  A colon-separated list of directories in which to find executables. If PATH is not set or is empty, **which** will use the system's default search path.

## EXIT STATUS

The **which** utility exits with one of the following values:

- 0

  All names were successfully resolved.

- 1

  Some names were resolved but not all.

- 2

  No names were resolved.

## DIAGNOSTICS

A diagnostic is given if an executable file with the argument name was not found in the path.

## SEE ALSO

[csh(1)](/csh/1.md), [find(1)](/find/1.md), [locate(1)](/locate/1.md), [whereis(1)](/whereis/1.md), [environ(7)](/environ/7.md)

## STANDARDS

**which** also exists as a built-in to [csh(1)](/csh/1.md), though with a different syntax.

## HISTORY

A **which** command first appeared in 3.0BSD.

The **-a** option first appeared in OpenBSD 2.3.
