The environment block for the system manager is initially set by
the kernel. (In particular, "key=value" assignments on the kernel
command line are returned into environment variables for PID 1).
For the user manager, the system manager sets the environment as
described in the "Environment Variables in Spawned Processes"
section of systemd.exec(5). The DefaultEnvironment= setting in
the system manager applies to all services including
user@.service. Additional entries may be configured (as for any
other service) through the Environment= and EnvironmentFile=
settings for user@.service (see systemd.exec(5)). Also,
additional environment variables may be set through the
ManagerEnvironment= setting in systemd-system.conf(5) and
systemd-user.conf(5).
Some of the variables understood by systemd
:
$SYSTEMD_LOG_LEVEL
The maximum log level of emitted messages (messages with a
higher log level, i.e. less important ones, will be
suppressed). Either one of (in order of decreasing
importance) emerg
, alert
, crit
, err
, warning
, notice
, info
,
debug
, or an integer in the range 0...7. See syslog(3) for
more information.
This can be overridden with --log-level=
.
$SYSTEMD_LOG_COLOR
A boolean. If true, messages written to the tty will be
colored according to priority.
This can be overridden with --log-color=
.
$SYSTEMD_LOG_TIME
A boolean. If true, console log messages will be prefixed
with a timestamp.
This can be overridden with --log-time=
.
$SYSTEMD_LOG_LOCATION
A boolean. If true, messages will be prefixed with a filename
and line number in the source code where the message
originates.
This can be overridden with --log-location=
.
$SYSTEMD_LOG_TID
A boolean. If true, messages will be prefixed with the
current numerical thread ID (TID).
$SYSTEMD_LOG_TARGET
The destination for log messages. One of console
(log to the
attached tty), console-prefixed
(log to the attached tty but
with prefixes encoding the log level and "facility", see
syslog(3), kmsg
(log to the kernel circular log buffer),
journal
(log to the journal), journal-or-kmsg
(log to the
journal if available, and to kmsg otherwise), auto
(determine
the appropriate log target automatically, the default), null
(disable log output).
This can be overridden with --log-target=
.
$XDG_CONFIG_HOME, $XDG_CONFIG_DIRS, $XDG_DATA_HOME,
$XDG_DATA_DIRS
The systemd user manager uses these variables in accordance
to the XDG Base Directory specification
[6] to find its
configuration.
$SYSTEMD_UNIT_PATH, $SYSTEMD_GENERATOR_PATH,
$SYSTEMD_ENVIRONMENT_GENERATOR_PATH
Controls where systemd looks for unit files and generators.
These variables may contain a list of paths, separated by
colons (":"). When set, if the list ends with an empty
component ("...:"), this list is prepended to the usual set
of paths. Otherwise, the specified list replaces the usual
set of paths.
$SYSTEMD_PAGER
Pager to use when --no-pager
is not given; overrides $PAGER.
If neither $SYSTEMD_PAGER nor $PAGER are set, a set of
well-known pager implementations are tried in turn, including
less(1) and more(1), until one is found. If no pager
implementation is discovered no pager is invoked. Setting
this environment variable to an empty string or the value
"cat" is equivalent to passing --no-pager
.
$SYSTEMD_LESS
Override the options passed to less
(by default "FRSXMK").
Users might want to change two options in particular:
K
This option instructs the pager to exit immediately when
Ctrl+C is pressed. To allow less
to handle Ctrl+C itself
to switch back to the pager command prompt, unset this
option.
If the value of $SYSTEMD_LESS does not include "K", and
the pager that is invoked is less
, Ctrl+C will be ignored
by the executable, and needs to be handled by the pager.
X
This option instructs the pager to not send termcap
initialization and deinitialization strings to the
terminal. It is set by default to allow command output to
remain visible in the terminal even after the pager
exits. Nevertheless, this prevents some pager
functionality from working, in particular paged output
cannot be scrolled with the mouse.
See less(1) for more discussion.
$SYSTEMD_LESSCHARSET
Override the charset passed to less
(by default "utf-8", if
the invoking terminal is determined to be UTF-8 compatible).
$SYSTEMD_PAGERSECURE
Takes a boolean argument. When true, the "secure" mode of the
pager is enabled; if false, disabled. If $SYSTEMD_PAGERSECURE
is not set at all, secure mode is enabled if the effective
UID is not the same as the owner of the login session, see
geteuid(2) and sd_pid_get_owner_uid(3). In secure mode,
LESSSECURE=1
will be set when invoking the pager, and the
pager shall disable commands that open or create new files or
start new subprocesses. When $SYSTEMD_PAGERSECURE is not set
at all, pagers which are not known to implement secure mode
will not be used. (Currently only less(1) implements secure
mode.)
Note: when commands are invoked with elevated privileges, for
example under sudo(8) or pkexec
(1), care must be taken to
ensure that unintended interactive features are not enabled.
"Secure" mode for the pager may be enabled automatically as
describe above. Setting SYSTEMD_PAGERSECURE=0 or not removing
it from the inherited environment allows the user to invoke
arbitrary commands. Note that if the $SYSTEMD_PAGER or $PAGER
variables are to be honoured, $SYSTEMD_PAGERSECURE must be
set too. It might be reasonable to completely disable the
pager using --no-pager
instead.
$SYSTEMD_COLORS
Takes a boolean argument. When true, systemd
and related
utilities will use colors in their output, otherwise the
output will be monochrome. Additionally, the variable can
take one of the following special values: "16", "256" to
restrict the use of colors to the base 16 or 256 ANSI colors,
respectively. This can be specified to override the automatic
decision based on $TERM and what the console is connected to.
$SYSTEMD_URLIFY
The value must be a boolean. Controls whether clickable links
should be generated in the output for terminal emulators
supporting this. This can be specified to override the
decision that systemd
makes based on $TERM and other
conditions.
$LISTEN_PID, $LISTEN_FDS, $LISTEN_FDNAMES
Set by systemd for supervised processes during socket-based
activation. See sd_listen_fds(3) for more information.
$NOTIFY_SOCKET
Set by systemd for supervised processes for status and
start-up completion notification. See sd_notify(3) for more
information.
For further environment variables understood by systemd and its
various components, see Known Environment Variables
[7].