Path: utzoo!utgpu!jarvis.csri.toronto.edu!clyde.concordia.ca!uunet!mcsun!hp4nl!star.cs.vu.nl!maart From: maart@cs.vu.nl (Maarten Litmaath) Newsgroups: comp.unix.questions Subject: use my which (was: which/type & built-ins) Message-ID: <5049@solo9.cs.vu.nl> Date: 5 Jan 90 20:03:53 GMT References: <1297@quintus.UUCP> <940@targon.UUCP> Reply-To: maart@cs.vu.nl (Maarten Litmaath) Organization: VU Informatika, Amsterdam, the Netherlands Lines: 70 ...if you want speed and no .cshrc quirks. Manual follows. See alt.sources (or comp.sources.misc archive soon) or email. WHICH(1) USER COMMANDS WHICH(1) NAME which - give alias, function or path expansion of command SYNOPSIS which [ -i ] [ -a ] [ -- ] [ command ] DESCRIPTION Which provides the user with the full expansion of the com- mand argument, be it either an alias, a shell function or an executable file (default). To enable search for aliases and shell functions the user should supply the `-i' (= interac- tive) flag. In that case which expects as standard input the expansion of the alias or shell function. If the standard input is empty or the `-i' flag has not been given, which will try to locate command in the user's PATH. The interac- tive mode is easily used by setting an alias like the fol- lowing: alias which alias !\$ \| /usr/local/bin/which -i !\* in csh, or alias which eval alias '\"\$$#\" |' \ /usr/local/bin/which -i '${1+"$@"}' in shells which are supersets of sh and which know aliases. If your shell has shell functions, you can use the following function: which() { eval last=\"\$$#\" set | sed -n "/^$last(){$/,/^}$/p" | /usr/local/bin/which -i ${1+"$@"} } If the `-a' (= all) flag is given, which will not stop after the first `match', but search for all occurrences of command in the user's PATH. The `--' flag can be used to end the list of options: the next argument (if present) will be taken as command, even if it starts with a `-'. Which [-i] [-a] [--] without further arguments prints the user's PATH broken up into its components, one per line. This new version of the which command is not a csh script. Being an executable it is much faster, and not sourcing .cshrc it gives a true picture of one's aliases. EXAMPLE % alias which alias !$ | /usr/local/bin/which -i !* % which which which alias !$ | /usr/local/bin/which -i !* % which -a which which alias !$ | /usr/local/bin/which -i !* /usr/local/bin/which /usr/ucb/which % -- 1755 EST, Dec 14, 1992: Henry Spencer is put on a one-way mission to the moon.| Maarten Litmaath @ VU Amsterdam: maart@cs.vu.nl, uunet!mcsun!botter!maart