| Line |  | 
|---|
| 1 | # | 
|---|
| 2 | # which - emulation of `which' as it appears in FreeBSD | 
|---|
| 3 | # | 
|---|
| 4 | # usage: which [-as] command [command...] | 
|---|
| 5 | # | 
|---|
| 6 |  | 
|---|
| 7 | which() | 
|---|
| 8 | { | 
|---|
| 9 | local aflag sflag ES a opt | 
|---|
| 10 |  | 
|---|
| 11 | OPTIND=1 | 
|---|
| 12 | while builtin getopts as opt ; do | 
|---|
| 13 | case "$opt" in | 
|---|
| 14 | a)      aflag=-a ;; | 
|---|
| 15 | s)      sflag=1 ;; | 
|---|
| 16 | ?)      echo "which: usage: which [-as] command [command ...]" >&2 | 
|---|
| 17 | exit 2 ;; | 
|---|
| 18 | esac | 
|---|
| 19 | done | 
|---|
| 20 |  | 
|---|
| 21 | (( $OPTIND > 1 )) && shift $(( $OPTIND - 1 )) | 
|---|
| 22 |  | 
|---|
| 23 | # without command arguments, exit with status 1 | 
|---|
| 24 | ES=1 | 
|---|
| 25 |  | 
|---|
| 26 | # exit status is 0 if all commands are found, 1 if any are not found | 
|---|
| 27 | for command; do | 
|---|
| 28 | # if $command is a function, make sure we add -a so type | 
|---|
| 29 | # will look in $PATH after finding the function | 
|---|
| 30 | a=$aflag | 
|---|
| 31 | case "$(builtin type -t $command)" in | 
|---|
| 32 | "function")     a=-a;; | 
|---|
| 33 | esac | 
|---|
| 34 |  | 
|---|
| 35 | if [ -n "$sflag" ]; then | 
|---|
| 36 | builtin type -p $a $command >/dev/null 2>&1 | 
|---|
| 37 | else | 
|---|
| 38 | builtin type -p $a $command | 
|---|
| 39 | fi | 
|---|
| 40 | ES=$? | 
|---|
| 41 | done | 
|---|
| 42 |  | 
|---|
| 43 | return $ES | 
|---|
| 44 | } | 
|---|
       
      
  Note:
 See   
TracBrowser
 for help on using the repository browser.