Install
=======
You will need an ANSI C compiler (like gcc) to compile this package.
Just type `make', followed by `make install'.
History
=======
The main difference with version 1.0 by Paul Vixie is that this
version will not return directory names as being executables
and that by default it will expand a leading "./" and "~/" to
its full path on output.
The -all option has been added in example of a version of which
on Ultrix. They use `-a' as option.
The --read-alias idea has been copied from a version of which by
Maarten Litmaath called `which-v6', he was using `-i' as option
which stands for `interactive'.
Manual page
===========
which - shows the full path of (shell) commands.
[1mSYNOPSIS[0m
[1mwhich [22m[options] [--] programname [...]
[1mDESCRIPTION[0m
[1mWhich [22mtakes one or more arguments. For each of its arguments it prints
to stdout the full path of the executables that would have been exe-
cuted when this argument had been entered at the shell prompt. It does
this by searching for an executable or script in the directories listed
in the environment variable [1mPATH [22musing the same algorithm as [1mbash(1)[22m.
This man page is generated from the file [4mwhich.texinfo[24m.
[1mOPTIONS[0m
[1m--all[22m, [1m-a[0m
Print all matching executables in [1mPATH[22m, not just the first.
[1m--read-alias[22m, [1m-i[0m
Read aliases from stdin, reporting matching ones on stdout. This is
useful in combination with using an alias for which itself. For ex-
ample
[1malias which='alias | which -i'[22m.
[1m--skip-alias[0m
Ignore option `--read-alias', if any. This is useful to explicity
search for normal binaries, while using the `--read-alias' option
in an alias or function for which.
[1m--read-functions[0m
Read shell function definitions from stdin, reporting matching ones
on stdout. This is useful in combination with using a shell func-
tion for which itself. For example:
[1mwhich() { declare -f | which --read-functions $@ }[0m
export -f which
[1m--skip-functions[0m
Ignore option `--read-functions', if any. This is useful to explic-
ity search for normal binaries, while using the `--read-functions'
option in an alias or function for which.
[1m--skip-dot[0m
Skip directories in [1mPATH [22mthat start with a dot.
[1m--skip-tilde[0m
Skip directories in [1mPATH [22mthat start with a tilde and executables
which reside in the [1mHOME [22mdirectory.
[1m--show-dot[0m
If a directory in [1mPATH [22mstarts with a dot and a matching executable
was found for that path, then print "./programname" rather than the
full path.
[1m--show-tilde[0m
Output a tilde when a directory matches the [1mHOME [22mdirectory. This
option is ignored when which is invoked as root.
[1m--tty-only[0m
Stop processing options on the right if not on tty.
[1m--version,-v,-V[0m
Print version information on standard output then exit success-
fully.
[1m--help[0m
Print usage information on standard output then exit successfully.
[1mRETURN VALUE[0m
[1mWhich [22mreturns the number of failed arguments, or -1 when no `program-
name' was given.
[1mEXAMPLE[0m
The recommended way to use this utility is by adding an alias (C shell)
or shell function (Bourne shell) for [1mwhich [22mlike the following:
[ba]sh:
which ()
{
(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot $@
}
export -f which
[t]csh:
alias which 'alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
This will print the readable ~/ and ./ when starting which from your
prompt, while still printing the full path when used from a script:
> which q2
~/bin/q2
> echo $(which q2)
/home/carlo/bin/q2
[1mBUGS[0m
The [1mHOME [22mdirectory is determined by looking for the [1mHOME [22menvironment
variable, which aborts when this variable doesn't exist. [1mWhich [22mwill
consider two equivalent directories to be different when one of them
contains a path with a symbolic link.
[1mAUTHOR[0m
Carlo Wood <carlo@gnu.org>
[1mSEE ALSO[0m
[1mbash(1)[0m
[4mWHICH[24m(1)