blob: 96e1dc0f3ac19841fd020ee28aea0afd70d42b10 [file] [log] [blame]
% 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 }