blob: 956b80ca7cd95182866174bbe5e2a25be62aaff8 [file] [log] [blame]
% File src/library/base/man/windows/shell.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2014 R Core Team
% Distributed under GPL 2 or later
\name{shell}
\Rdversion{1.1}
\alias{shell}
\title{Invoke a System Command, using a Shell}
\usage{
shell(cmd, shell, flag = "/c", intern = FALSE, wait = TRUE,
translate = FALSE, mustWork = FALSE, ...)
}
\arguments{
\item{cmd}{the system command to be invoked, as a string.}
\item{shell}{a string giving the name of the shell to be used, or
\code{NULL} (no shell). If missing, a suitable shell is chosen:
see \sQuote{Details}.}
\item{flag}{the switch to run a command under the shell. If the shell
is \code{bash} or \code{tcsh} or \code{sh} the default is changed to
\code{"-c"}.}
\item{intern}{a logical, indicates whether to make the output of the
command an \R object.}
\item{wait}{should the \R interpreter wait for the command to finish?
The default is to wait, and the interpreter will always wait if
\code{intern = TRUE}.}
\item{translate}{If \code{TRUE}, \samp{"/"} in \code{cmd} is
translated to \samp{"\\"}.}
\item{mustWork}{a logical; if \code{TRUE} failure to run the command
will give an \R error, if \code{FALSE} a warning and if \code{NA},
no \R message.}
\item{\dots}{additional arguments to \code{\link{system}}.}
}
\description{
\code{shell} runs the command specified by \code{cmd}, usually under
a shell, because that is what the POSIX standards require.
}
\value{
If \code{intern = TRUE}, a character vector giving the output of the
command, one line per character string, or an error message if the
command could not be run.
If \code{intern = FALSE}, the return value is an error code, given the
invisible attribute (so needs to be printed explicitly). If the
command could not be run for any reason, the value is \code{-1} and
an \R warning is generated. Otherwise if \code{wait = FALSE} the value
is the error code returned by the command, and if \code{wait = TRUE}
it is the zero (the conventional success value),
If \code{intern = FALSE} and \code{wait = TRUE} (the defaults) the text
output from a command that is a console application will appear in
the \R console (\code{Rgui}) or the window running \R (\code{Rterm}).
}
\details{
If no \code{shell} is specified, the environment variables
\env{R_SHELL} and \env{COMSPEC} are tried in turn: \env{COMSPEC}
should always succeed. Using \code{shell = NULL} invokes the command
\code{cmd} directly, in which case an extension of \file{.exe} is
assumed. It is possible to use batch files directly if their
extension is given: Windows (rather than \R) then chooses a shell.
See \code{\link{system}} for fuller details: \code{shell} is a more
user-friendly wrapper for \code{system}. To make use of Windows
file associations, use \code{\link{shell.exec}}.
}
\note{
This function exists only on Windows: on all other platform
\code{\link{system}} uses a shell.
}
\seealso{\code{\link{system}}, \code{\link{shell.exec}}}
\keyword{utilities}