mirror of
https://github.com/notwa/rc
synced 2024-11-05 07:19:02 -08:00
add Debian which
but call it witch
instead
This commit is contained in:
parent
9b6df43c9e
commit
1bfe18c03f
1 changed files with 66 additions and 0 deletions
66
sh/witch
Normal file
66
sh/witch
Normal file
|
@ -0,0 +1,66 @@
|
|||
#!/usr/bin/env sh
|
||||
# this is `which` from Debian. the only changes are superficial (formatting).
|
||||
# this does not work as-is with zsh.
|
||||
|
||||
set -ef
|
||||
|
||||
if test -n "$KSH_VERSION"; then
|
||||
puts() {
|
||||
print -r -- "$*"
|
||||
}
|
||||
else
|
||||
puts() {
|
||||
printf '%s\n' "$*"
|
||||
}
|
||||
fi
|
||||
|
||||
ALLMATCHES=0
|
||||
|
||||
while getopts a whichopts
|
||||
do
|
||||
case "$whichopts" in
|
||||
a) ALLMATCHES=1 ;;
|
||||
?) puts "Usage: $0 [-a] args"; exit 2 ;;
|
||||
esac
|
||||
done
|
||||
shift $(($OPTIND - 1))
|
||||
|
||||
if [ "$#" -eq 0 ]; then
|
||||
ALLRET=1
|
||||
else
|
||||
ALLRET=0
|
||||
fi
|
||||
case $PATH in
|
||||
(*[!:]:) PATH="$PATH:" ;;
|
||||
esac
|
||||
for PROGRAM in "$@"; do
|
||||
RET=1
|
||||
IFS_SAVE="$IFS"
|
||||
IFS=:
|
||||
case $PROGRAM in
|
||||
*/*)
|
||||
if [ -f "$PROGRAM" ] && [ -x "$PROGRAM" ]; then
|
||||
puts "$PROGRAM"
|
||||
RET=0
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
for ELEMENT in $PATH; do
|
||||
if [ -z "$ELEMENT" ]; then
|
||||
ELEMENT=.
|
||||
fi
|
||||
if [ -f "$ELEMENT/$PROGRAM" ] && [ -x "$ELEMENT/$PROGRAM" ]; then
|
||||
puts "$ELEMENT/$PROGRAM"
|
||||
RET=0
|
||||
[ "$ALLMATCHES" -eq 1 ] || break
|
||||
fi
|
||||
done
|
||||
;;
|
||||
esac
|
||||
IFS="$IFS_SAVE"
|
||||
if [ "$RET" -ne 0 ]; then
|
||||
ALLRET=1
|
||||
fi
|
||||
done
|
||||
|
||||
exit "$ALLRET"
|
Loading…
Reference in a new issue