mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-22 16:31:07 +00:00
77 lines
1.3 KiB
Bash
77 lines
1.3 KiB
Bash
#!/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
|
|
|