R: Invoke a System Command, using a Shell: Invoke a System Command, using a Shell


shell runs the command specified by cmd, usually under a shell, because that is what the POSIX standards require.


shell(cmd, shell, flag = "/c", intern = FALSE, wait = TRUE,
      translate = FALSE, mustWork = FALSE, ...)



the system command to be invoked, as a string.


a string giving the name of the shell to be used, or NULL (no shell). If missing, a suitable shell is chosen: see ‘Details’.


the switch to run a command under the shell. If the shell is bash or tcsh or sh the default is changed to "-c".


a logical, indicates whether to make the output of the command an R object.


should the R interpreter wait for the command to finish? The default is to wait, and the interpreter will always wait if intern = TRUE.


If TRUE, "/" in cmd is translated to "\".


a logical; if TRUE failure to run the command will give an R error, if FALSE a warning and if NA, no R message.


additional arguments to system.


If no shell is specified, the environment variables R_SHELL and COMSPEC are tried in turn: COMSPEC should always succeed. Using shell = NULL invokes the command cmd directly, in which case an extension of ‘.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 system for fuller details: shell is a more user-friendly wrapper for system. To make use of Windows file associations, use shell.exec.


If 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 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 -1 and an R warning is generated. Otherwise if wait = FALSE the value is the error code returned by the command, and if wait = TRUE it is the zero (the conventional success value),

If intern = FALSE and wait = TRUE (the defaults) the text output from a command that is a console application will appear in the R console (Rgui) or the window running R (Rterm).


This function exists only on Windows: on all other platform system uses a shell.

See Also

system, shell.exec

Questions? Problems? Suggestions? or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.