chet@cwns5.INS.CWRU.Edu (Chet Ramey) (08/05/89)
The following shar file contains two versions of the Korn Shell command
`whence'. The first (whence) is a strict implementation; the second
(whence2) does a little less checking. Send opinions to me.
Chet Ramey "We are preparing to think about contemplating
Network Services Group, CWRU preliminary work on plans to develop a
chet@cwjcc.INS.CWRU.Edu schedule for producing the 10th Edition of
the Unix Programmers Manual." -- Andrew Hume
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting test in a file
# 3. Execute the file with /bin/sh (not csh) to create the files:
#
# whence
# whence2
#
# Created by chet on Fri Aug 4 21:36:23 EDT 1989
#
if test -f 'whence'
then
echo shar: will not over-write existing file "'whence'"
else
echo extracting "'whence'"
sed 's/^X//' >whence <<'SHAR_EOF'
X#
X# An almost-ksh compatible `whence' command. This is as hairy as it is
X# because of the desire to exactly mimic ksh.
X#
X# This depends somewhat on knowing the format of the output of the bash
X# `builtin type' command.
X#
X# Chet Ramey
X# chet@ins.CWRU.Edu
X#
X
X
Xwhence()
X{
X local vflag
X local path
X
X vflag=
X path=
X if [ "$#" = "0" ] ; then
X echo "whence: argument expected"
X return 1
X fi
X case "$1" in
X -v) vflag=1
X shift 1
X ;;
X -*) echo "whence: bad option: $1"
X return 1
X ;;
X *) ;;
X esac
X
X if [ "$#" = "0" ] ; then
X echo "whence: bad argument count"
X return 1
X fi
X
X for cmd
X do
X if [ "$vflag" ] ; then
X echo $(builtin type $cmd | sed 1q)
X else
X path=$(builtin type -path $cmd)
X if [ "$path" ] ; then
X echo $path
X else
X case "$cmd" in
X /*) echo ""
X ;;
X *) case "$(builtin type -type $cmd)" in
X "") echo ""
X ;;
X *) echo "$cmd"
X ;;
X esac
X ;;
X esac
X fi
X fi
X done
X return 0
X}
SHAR_EOF
if test 985 -ne "`wc -c < 'whence'`"
then
echo shar: error transmitting "'whence'" '(should have been 985 characters)'
fi
fi
if test -f 'whence2'
then
echo shar: will not over-write existing file "'whence2'"
else
echo extracting "'whence2'"
sed 's/^X//' >whence2 <<'SHAR_EOF'
X#
X# An almost-ksh compatible `whence' command. The one difference between this
X# and the real ksh `whence' is that this version, when the "-v" flag is not
X# given and presented with something that is not in the path, simply echos it
X# without more checking to see if it is a function, builtin, or alias.
X#
X# Chet Ramey
X# chet@ins.CWRU.Edu
X#
X
X
Xwhence()
X{
X local vflag
X local path
X
X vflag=
X path=
X if [ $# = "0" ] ; then
X echo "whence: argument expected"
X return 1
X fi
X case "$1" in
X -v) vflag=1
X shift 1
X ;;
X -*) echo "whence: bad option: $1"
X return 1
X ;;
X *) ;;
X esac
X
X if [ $# = "0" ] ; then
X echo "whence: bad argument count"
X return 1
X fi
X
X for cmd
X do
X if [ "$vflag" ] ; then
X echo $(builtin type $cmd | sed 1q)
X else
X path=$(builtin type -path $cmd)
X if [ "$path" ] ; then
X echo $path
X else
X case "$cmd" in
X /*) echo ""
X ;;
X *) echo "$cmd"
X ;;
X esac
X fi
X fi
X done
X return 0
X}
SHAR_EOF
if test 957 -ne "`wc -c < 'whence2'`"
then
echo shar: error transmitting "'whence2'" '(should have been 957 characters)'
fi
fi
# end of shell archive
exit 0
--
Chet Ramey "We are preparing to think about contemplating
Network Services Group, CWRU preliminary work on plans to develop a
chet@cwjcc.INS.CWRU.Edu schedule for producing the 10th Edition of
the Unix Programmers Manual." -- Andrew Hume