mirror of https://github.com/n-hys/bash.git
63 lines
1.6 KiB
Plaintext
63 lines
1.6 KiB
Plaintext
#
|
|
# which - emulation of `which' as it appears in FreeBSD
|
|
#
|
|
# usage: which [-as] command [command...]
|
|
#
|
|
#
|
|
# Chet Ramey <chet.ramey@case.edu>
|
|
#
|
|
# Copyright 1999 Chester Ramey
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2, or (at your option)
|
|
# any later version.
|
|
#
|
|
# TThis program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software Foundation,
|
|
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
which()
|
|
{
|
|
local aflag sflag ES a opt
|
|
|
|
OPTIND=1
|
|
while builtin getopts as opt ; do
|
|
case "$opt" in
|
|
a) aflag=-a ;;
|
|
s) sflag=1 ;;
|
|
?) echo "which: usage: which [-as] command [command ...]" >&2
|
|
exit 2 ;;
|
|
esac
|
|
done
|
|
|
|
(( $OPTIND > 1 )) && shift $(( $OPTIND - 1 ))
|
|
|
|
# without command arguments, exit with status 1
|
|
ES=1
|
|
|
|
# exit status is 0 if all commands are found, 1 if any are not found
|
|
for command; do
|
|
# if $command is a function, make sure we add -a so type
|
|
# will look in $PATH after finding the function
|
|
a=$aflag
|
|
case "$(builtin type -t $command)" in
|
|
"function") a=-a;;
|
|
esac
|
|
|
|
if [ -n "$sflag" ]; then
|
|
builtin type -p $a $command >/dev/null 2>&1
|
|
else
|
|
builtin type -p $a $command
|
|
fi
|
|
ES=$?
|
|
done
|
|
|
|
return $ES
|
|
}
|