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

\name{Sys.getenv}
\title{Get Environment Variables}
\usage{
Sys.getenv(x = NULL, unset = "", names = NA)
}
\alias{Sys.getenv}
\arguments{
  \item{x}{a character vector, or \code{NULL}.}
  \item{unset}{a character string.}
  \item{names}{logical: should the result be named?  If \code{NA} (the
    default) single-element results are not named whereas multi-element
    results are.}
}
\description{
  \code{Sys.getenv} obtains the values of the environment variables.
}
\details{
  Both arguments will be coerced to character if necessary.

  Setting \code{unset = NA} will enable unset variables and those set to
  the value \code{""} to be distinguished, \emph{if the OS does}.  POSIX
  requires the OS to distinguish, and all known current \R platforms do.
}
\value{
  A vector of the same length as \code{x}, with (if \code{names ==
  TRUE}) the variable names as its \code{names} attribute.  Each element
  holds the value of the environment variable named by the corresponding
  component of \code{x} (or the value of \code{unset} if no environment
  variable with that name was found).

  On most platforms \code{Sys.getenv()} will return a named vector
  giving the values of all the environment variables, sorted in the
  current locale.  It may be confused by names containing \code{=} which
  some platforms allow but POSIX does not.  (Windows is such a platform:
  there names including \code{=} are truncated just before the first
  \code{=}.)

  When \code{x} is missing and \code{names} is not false, the result is
  of class \code{"Dlist"} in order to get a nice
  \code{\link{print}} method.
}
\seealso{
  \code{\link{Sys.setenv}},
  \code{\link{Sys.getlocale}} for the locale in use,
  \code{\link{getwd}} for the working directory.

  The help for \sQuote{\link{environment variables}} lists many of the
  environment variables used by \R.
}
\examples{
## whether HOST is set will be shell-dependent e.g. Solaris' csh did not.
Sys.getenv(c("R_HOME", "R_PAPERSIZE", "R_PRINTCMD", "HOST"))

s <- Sys.getenv()
\donttest{names(s)    # all settings (the values could be very long)
head(s, 12) # using the Dlist print() method
}
## Language and Locale settings -- but rather use Sys.getlocale()
s[grep("^L(C|ANG)", names(s))]
}
\keyword{environment}
\keyword{utilities}
