#!/bin/sh # # which # # locates a program in path # set -E if [ -z $1 ] or [ $1 = "-h" ] or [ $1 = "-H" ] echo "Usage : which [options] program ..." echo " -A show all found" echo " -S no output, 0 if found, 1 if not" exit 120 fi set T = "${TEMP}which$$.tmp" set A = 0 set F = 0 set S = 0 set L = 1 # get options while [ ${L} -eq 1 ] if [ $1 = "-a" ] or [ $1 = "-A" ] set A = 1 shift else if [ $1 = "-s" ] or [ $1 = "-S" ] set S = 1 shift else set L = 0 fi fi loop # split dirs in path echo "${PATH}:." > ${T} set L = `sed "s/:/ /" ${T}` rm -q -c ${T}* # find instances while [ $# -gt 0 ] set F = ${F} + 1 for D in ${L} # check for file if [ -f ${D}$1 ] set T = 0 else set T = 1 fi # process result if [ ${T} -eq 0 ] if [ ${S} -eq 0 ] echo "${D}$1" fi set F = ${F} - 1 if [ ${A} -eq 0 ] break fi fi next shift loop # -s numeric result if [ ${S} -gt 0 ] if [ ${F} -eq 0 ] exit 0 else exit 70 fi