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.[donotprint]
|which command details|
|Description||Locate a program file|
|Estimated completion time||5m|
[/donotprint] 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 [option] command
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
which command options
From the which(1) command man page:
|--skip-dot||Skip directories in PATH that start with a dot.|
|--skip-tilde||Skip directories in PATH that start with a tilde.|
|--show-dot||Don’t expand a dot to current directory in output.|
|--show-tilde||Output a tilde for HOME directory for non-root.|
|--tty-only||Stop processing options on the right if not on tty.|
|-a||Print all matches in PATH, not just the first|
|-i||Read list of aliases from stdin.|
|--skip-alias||Ignore option -i; don’t read stdin.|
|--read-functions||Read shell functions from stdin.|
|--skip-functions||Ignore option –read-functions; don’t read stdin.|
On Linux bash defined which as function as follows:
(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
- which(1) Linux/Unix command man page