diff --git a/usr.bin/which/Makefile b/usr.bin/which/Makefile new file mode 100644 index 000000000000..a60e7139fc48 --- /dev/null +++ b/usr.bin/which/Makefile @@ -0,0 +1,11 @@ +# Makefile for which +# $Id: Makefile,v 1.6 1995/01/24 17:58:35 bde Exp $ + +NOOBJ= yes +SRCS= + +afterinstall: + install -c -o $(BINOWN) -g $(BINGRP) -m $(BINMODE) \ + which.pl $(DESTDIR)$(BINDIR)/which + +.include diff --git a/usr.bin/which/which.1 b/usr.bin/which/which.1 new file mode 100644 index 000000000000..757ae1ecb879 --- /dev/null +++ b/usr.bin/which/which.1 @@ -0,0 +1,54 @@ +.\" Copyright (c) 1995, Jordan Hubbard +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the FreeBSD Project +.\" its contributors. +.\" 4. Neither the name of the FreeBSD Project nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +# +.\" THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTOR ``AS IS'' AND ANY EXPRESS OR +.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +.\" IN NO EVENT SHALL THE CONTRIBUTOR BE LIABLE FOR ANY DIRECT, INDIRECT, +.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +.\" OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.\" +.\" $Id$ +.Dd January 26, 1995 +.Dt WHICH 1 +.Os FreeBSD +.Sh NAME +.Nm which +.Nd "locate a program file in the user's path" +.Sh SYNOPSIS +.Nm which +.Op Ar command +.Ar ... +.Sh DESCRIPTION +.Nm Which +takes a list of command names and searches the path for each executable +file that would be run had these commands actually been invoked. +.Sh HISTORY +The +.Nm +command first appeared in FreeBSD 2.1 +.Sh SEE ALSO +.Xr perl 1 +.Sh AUTHOR +The PERL script for this more modern version of +.Nm which +was written by Wolfram Schneider . diff --git a/usr.bin/which/which.pl b/usr.bin/which/which.pl new file mode 100755 index 000000000000..757da9b3951f --- /dev/null +++ b/usr.bin/which/which.pl @@ -0,0 +1,52 @@ +#!/usr/bin/perl +# +# Copyright (C) 1995, Wolfram Schneider +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This product includes software developed by the University of +# California, Berkeley and its contributors. +# 4. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE CONTRIBUTOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# [whew!] +# +# $Id: which.sh,v 1.1.1.1 1995/01/25 19:18:33 jkh Exp $ + +$all = 0; +@path = split(/:/, $ENV{'PATH'}); + +if ($ARGV[0] eq "-a") { + $all = 1; shift @ARGV; +} elsif ($ARGV[0] =~ /^-(h|help|\?)$/) { + die "usage:\n\twhich [-a] program ...\n"; +} + +foreach $prog (@ARGV) { + foreach $e (@path) { + if (-x "$e/$prog") { + print "$e/$prog\n"; + last unless $all; + } + } +}