% File src/library/base/man/Sys.which.Rd
% Part of the R package, https://www.R-project.org
% Copyright 2007-2017 R Core Team
% Distributed under GPL 2 or later

\name{Sys.which}
\alias{Sys.which}
\title{Find Full Paths to Executables}
\description{
  This is an interface to the system command \code{which}, or to an
  emulation on Windows.
}
\usage{
Sys.which(names)
}
\arguments{
  \item{names}{Character vector of names or paths of possible executables.}
}
\details{
  The system command \command{which} reports on the full path names of
  an executable (including an executable script) as would be executed by
  a shell, accepting either absolute paths or looking on the path.

  On Windows an \sQuote{executable} is a file with extension
  \file{.exe}, \file{.com}, \file{.cmd} or \file{.bat}.  Such files need
  not actually be executable, but they are what \code{\link{system}}
  tries.

  On a Unix-alike the full path to \code{which} (usually
  \file{/usr/bin/which}) is found when \R is installed.
}
\value{
  A character vector of the same length as \code{names}, named by
  \code{names}.  The elements are either the full path to the
  executable  or some indication that no executable of that name was
  found.  Typically the indication is \code{""}, but this does depend on
  the OS (and the known exceptions are changed to \code{""}).  Missing
  values in \code{names} have missing return values.

  On Windows the paths will be short paths (8+3 components, no spaces)
  with \code{\\} as the path delimiter.
}
\note{
  Except on Windows this calls the system command \command{which}: since
  that is not part of e.g.\sspace{}the POSIX standards, exactly what it does is
  OS-dependent.  It will usually do tilde-expansion and it may make use
  of \command{csh} aliases.
}
\examples{
## the first two are likely to exist everywhere
## texi2dvi exists on most Unix-alikes and under MiKTeX
Sys.which(c("ftp", "ping", "texi2dvi", "this-does-not-exist"))
}
\keyword{ utilities }
