45 lines
		
	
	
	
		
			852 B
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
	
		
			852 B
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# which - emulation of `which' as it appears in FreeBSD
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# usage: which [-as] command [command...]
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								which()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									local aflag sflag ES a
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									OPTIND=1
							 | 
						||
| 
								 | 
							
									while builtin getopts as opt ; do
							 | 
						||
| 
								 | 
							
										case "$opt" in
							 | 
						||
| 
								 | 
							
										a)	aflag=-a ;;
							 | 
						||
| 
								 | 
							
										s)	sflag=1 ;;
							 | 
						||
| 
								 | 
							
										?)	echo "which: usage: which [-as] command [command ...]" >&2
							 | 
						||
| 
								 | 
							
											exit 2 ;;
							 | 
						||
| 
								 | 
							
										esac
							 | 
						||
| 
								 | 
							
									done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									(( $OPTIND > 1 )) && shift $(( $OPTIND - 1 ))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									# without command arguments, exit with status 1
							 | 
						||
| 
								 | 
							
									ES=1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									# exit status is 0 if all commands are found, 1 if any are not found
							 | 
						||
| 
								 | 
							
									for command; do
							 | 
						||
| 
								 | 
							
										# if $command is a function, make sure we add -a so type
							 | 
						||
| 
								 | 
							
										# will look in $PATH after finding the function
							 | 
						||
| 
								 | 
							
										a=$aflag
							 | 
						||
| 
								 | 
							
										case "$(builtin type -t $command)" in
							 | 
						||
| 
								 | 
							
										"function")	a=-a;;
							 | 
						||
| 
								 | 
							
										esac
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if [ -n "$sflag" ]; then
							 | 
						||
| 
								 | 
							
											builtin type -p $a $command >/dev/null 2>&1
							 | 
						||
| 
								 | 
							
										else
							 | 
						||
| 
								 | 
							
											builtin type -p $a $command
							 | 
						||
| 
								 | 
							
										fi
							 | 
						||
| 
								 | 
							
										ES=$?
							 | 
						||
| 
								 | 
							
									done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return $ES
							 | 
						||
| 
								 | 
							
								}
							 |