Downloading

  • which-2.1.tar.gz (ChangeLog since version 2.0)

    Manual page

    WHICH(1)                                                 WHICH(1)
    
    
    NAME
           which - show full path of commands
    
    SYNOPSIS
           which [options] [--] programname [...]
    
    DESCRIPTION
           Which takes one or more arguments.  For each of its argu-
           ments it prints to stdout the full path of the executables
           that would have been executed when this argument had been
           entered at the shell prompt.  It does this by searching
           for an executable or script in the directories listed in
           the environment variable PATH using the same algorithm as
           bash(1).
    
    OPTIONS
           --version
               Print version information on standard output then exit
               successfully.
    
           --skip-dot
               Skip directories in PATH that start with a dot.
    
           --skip-tilde
               Skip directories in PATH that start with a tilde.
    
           --show-dot
               If a directory in PATH starts with a dot and a match-
               ing executable was found for that path, then print
               "./programname" rather than the full path.
    
           --show-tilde
               Output a tilde when a directory matches the HOME
               directory.  This option is ignored when which is
               invoked as root.
    
           --tty-only
               Stop processing options on the right if not on tty.
    
           --all, -a
               Print all matching executables in PATH, not just the
               first.
    
    RETURN VALUE
           Which returns the number of failed arguments, or -1 when
           no programname was given.
    
    EXAMPLE
           A useful way to use this utility is by adding an alias for
           which like the following:
    
                  alias which='which --tty-only --show-tilde --show-dot'
    
           from your prompt, while still printing the full path  when
           used from a script:
    
                  > which q2
                  ~/bin/q2
                  > echo `which q2`
                  /home/carlo/bin/q2
    
    BUGS
           If  programname  is an alias which starts a different exe-
           cutable, then which will give the wrong path;  it  doesn't
           do alias expansion.
    
    AUTHOR
           Carlo Wood (carlo@runaway.xs4all.nl)
    
    SEE ALSO
           bash(1)
    

    Examples

    >unalias which
    >export PATH=".:~/bin:/bin:/usr/bin"
    >export HOME=`(cd ~; pwd)`
    >touch cat; chmod 755 cat; pwd
    /home/carlo/c/which
    
    >which
    Usage: ./which [options] [--] programname [...]
    Options: --version    Print version and exit successfully.
             --skip-dot   Skip directories in PATH that start with a dot.
             --skip-tilde Skip directories in PATH that start with a tilde.
             --show-dot   Don't expand a dot to current directory in output.
             --show-tilde Output a tilde for HOME directory for non-root.
             --tty-only   Stop processing options on the right if not on tty.
             --all, -a    Print all matching executables in PATH, not just the first
    
    >which --version
    GNU which v2.1, Copyright (C) 1999 Carlo Wood.
    GNU which comes with ABSOLUTELY NO WARRANTY;
    This program is free software; your freedom to use, change
    and distribute this program is covered by the GPL.
    
    >which -- --version
    which: no --version in (.:~/bin:/bin:/usr/bin)
    
    >which cat
    /home/carlo/c/which/cat
    
    >which --show-tilde cat
    ~/c/which/cat
    
    >which --show-dot cat
    ./cat
    
    >which --show-tilde --show-dot cat
    ./cat
    
    >which --skip-dot cat
    /bin/cat
    
    >(cd /bin; which cat)
    /bin/cat
    
    >(cd /bin; which --show-dot cat)
    ./cat
    
    >(cd /bin; PATH=".:/bin:/usr/bin" which --show-dot cat)
    ./cat
    
    >(cd /bin; PATH="/bin:.:/usr/bin" which --show-dot cat)
    /bin/cat
    
    (cd /bin; PATH=".:/bin:/usr/bin" which --skip-dot --show-dot cat)
    /bin/cat
    
    >which ls
    /bin/ls
    
    >which xxx
    which: no xxx in (.:~/bin:/bin:/usr/bin)
    
    >which ./ls
    which: no ls in (.)
    
    >(cd /; which bin/ls)
    /bin/ls
    
    >(cd /; which --show-dot bin/ls)
    ./bin/ls
    
    >(cd /; which --show-dot /bin/ls)
    /bin/ls
    
    >(cd /; which --show-dot bin/xxx)
    which: no xxx in (./bin)
    
    >(cd /; which --show-dot /bin/xxx)
    which: no xxx in (/bin)
    
    >which --all cat
    /home/carlo/c/which/cat
    /bin/cat
    
    >touch xxx
    >which ./xxx
    which: no xxx in (.)
    
    >chmod 711 xxx
    >which ./xxx
    /home/carlo/c/which/xxx
    
    >su
    >chown root xxx
    >exit
    >which ./xxx
    /home/carlo/c/which/xxx
    
    >su
    >chmod 700 xxx
    >exit
    >which ./xxx
    which: no xxx in (.)
    
    >id
    uid=500(carlo) gid=100(users) groups=100(users),0(root),14(uucp),20(modem),200(libr),201(cvs)
    >ls -l xxx
    -rwx------   1 root     users           0 Apr 10 02:00 xxx*
    >su
    >chmod 750 xxx
    >chgrp libr xxx
    >exit
    >which ./xxx
    /home/carlo/c/which/xxx
    
    >su
    >chgrp bin xxx
    >exit
    >which ./xxx
    which: no xxx in (.)