<<< Date Index >>>     <<< Thread Index >>>

Re: when using `which` send errors to /dev/null



On 23May2007 13:33, David Champion <dgc@xxxxxxxxxxxx> wrote:
| Is the problem with irregular behavior of different whiches?

I've never trusted it even to exist everywhere:-)

| Which is
| convenient but besides this has the drawback that since it's almost
| always a csh script, it sometimes returns csh aliases and such instead
| of what you really want.
| 
| It's easy enough to add a which-like command though.
| 
| where () 

Yes! I'd run with this myself.

| { 
|     echo $PATH | tr : '\012' | while read dir; do

This is more robustly written:

  printf "%s\n" "$PATH" | tr : '\012' | while read -r dir; do

Unless that breaks on Solaris, which it may:-(

|         [ -x "$dir/$1" -a ! -d "$dir/$1" ] && echo "$dir/$1" && return 0
| 
|         ## "return 0" returns from the do/done subshell, not the
|         ## function. "false" here ensures that a "where" that does not
|         ## find the program returns false at end.
|         false

This is not necessary. The last loop iteration will get false from the
"read" condition of the while, and so the subshell will exit non-zero
anyway.
-- 
Cameron Simpson <cs@xxxxxxxxxx> DoD#743
http://www.cskk.ezoshosting.com/cs/

If you can keep your head while all those about you are losing theirs,
perhaps you don't understand the situation.
        - Paul Wilson <Paul_Wilson.DBS@xxxxxxxxxxxxxxxxxxxxxxx>