Patch-ID: bash40-021
[bash.git] / examples / functions / which
blobca33703e4440ee063fde3d8953bffbc8d002c0d6
2 # which - emulation of `which' as it appears in FreeBSD
4 # usage: which [-as] command [command...]
7 which()
9         local aflag sflag ES a opt
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
21         (( $OPTIND > 1 )) && shift $(( $OPTIND - 1 ))
23         # without command arguments, exit with status 1
24         ES=1
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
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
43         return $ES