blob: 119843da9e20f33ab87da4719e7f46abbf253079 [file] [log] [blame]
% File src/library/base/man/Sys.setenv.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2022 R Core Team
% Distributed under GPL 2 or later
\name{Sys.setenv}
\alias{Sys.setenv}
\alias{Sys.unsetenv}
\title{Set or Unset Environment Variables}
\usage{
Sys.setenv(\dots)
Sys.unsetenv(x)
}
\arguments{
\item{\dots}{named arguments with values coercible to a character string.}
\item{x}{a character vector, or an object coercible to character.}
}
\description{
\code{Sys.setenv} sets environment variables (for other processes
called from within \R or future calls to \code{\link{Sys.getenv}} from
this \R process).
\code{Sys.unsetenv} removes environment variables.
}
\value{
A logical vector, with elements being true if (un)setting the
corresponding variable succeeded. (For \code{Sys.unsetenv} this
includes attempting to remove a non-existent variable.)
}
\details{
Non-standard \R names must be quoted in \code{Sys.setenv}: see the
examples. Most platforms (and POSIX) do not allow names containing
\code{"="}. Windows does, but the facilities provided by \R may not
handle these correctly so they should be avoided. Most platforms
allow setting an environment variable to \code{""}, but Windows does
not and there \code{Sys.setenv(FOO = "")} unsets \env{FOO}.
There may be system-specific limits on the maximum length of the
values of individual environment variables or of names+values of all
environment variables.
% https://docs.microsoft.com/en-gb/windows/win32/procthread/environment-variables?redirectedfrom=MSDN (says since Vista there is no limit on the block)
Recent versions of Windows have a maximum length of 32,767 characters for a
environment variable; however \code{cmd.exe} has a limit of 8192
characters for a command line, hence \command{set} can only set 8188.
% http://support.microsoft.com/kb/830473
}
\note{
On Unix-alikes, if \code{Sys.unsetenv} is not supported, it will at
least try to set the value of the environment variable to \code{""},
with a warning.
}
\seealso{
\code{\link{Sys.getenv}}, \link{Startup} for ways to set environment
variables for the \R session.
\code{\link{setwd}} for the working directory.
\code{\link{Sys.setlocale}} to set (and get) language locale variables,
and notably \code{\link{Sys.setLanguage}} to set the \env{LANGUAGE}
environment variable which is used for \code{\link{conditionMessage}}
translations.
The help for \sQuote{\link{environment variables}} lists many of the
environment variables used by \R.
}
\examples{
print(Sys.setenv(R_TEST = "testit", "A+C" = 123)) # `A+C` could also be used
Sys.getenv("R_TEST")
Sys.unsetenv("R_TEST") # on Unix-alike may warn and not succeed
Sys.getenv("R_TEST", unset = NA)
}
\keyword{environment}
\keyword{utilities}