View file File name : which Content :#! /bin/sh 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"