man: add a list of environment variables

This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2013-09-15 11:56:19 -04:00
parent 19f6d71077
commit 43638332c4
2 changed files with 117 additions and 26 deletions

View file

@ -57,7 +57,7 @@
<title>Description</title>
<para>Unit configuration files for services, sockets,
mount points and swap devices share a subset of
mount points, and swap devices share a subset of
configuration options which define the execution
environment of spawned processes.</para>
@ -76,27 +76,6 @@
configuration options are configured in the [Service],
[Socket], [Mount], or [Swap] sections, depending on the unit
type.</para>
<para>Processes started by the system systemd instance
are executed in a clean environment in which only the
<varname>$PATH</varname> and <varname>$LANG</varname>
variables are set by default. In order to add
additional variables, see the
<varname>Environment=</varname> and
<varname>EnvironmentFile=</varname> options below. To
specify variables globally, see
<varname>DefaultEnvironment=</varname> in
<citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
or the kernel option
<varname>systemd.setenv=</varname> in
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>. Processes
started by the user systemd instances inherit all
environment variables from the user systemd instance,
and have <varname>$HOME</varname>,
<varname>$USER</varname>,
<varname>$XDG_RUNTIME_DIR</varname> defined, among
others. In addition, <varname>$MANAGERPID</varname>
contains the PID of the user systemd instance.</para>
</refsect1>
<refsect1>
@ -1005,6 +984,118 @@
</variablelist>
</refsect1>
<refsect1>
<title>Environment variables in spawned processes</title>
<para>Processes started by the system are executed in
a clean environment in which select variables
listed below are set. System processes started by systemd
do not inherit variables from PID 1, but processes
started by user systemd instances inherit all
environment variables from the user systemd instance.
</para>
<variablelist class='environment-variables'>
<varlistentry>
<term><varname>$PATH</varname></term>
<listitem><para>Colon-separated list
of directiories to use when launching
executables. Systemd uses a fixed
value of
<filename>/usr/local/sbin</filename>:<filename>/usr/local/bin</filename>:<filename>/usr/sbin</filename>:<filename>/usr/bin</filename>:<filename>/sbin</filename>:<filename>/bin</filename>.
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>$LANG</varname></term>
<listitem><para>Locale. Can be set in
<citerefentry><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
or on the kernel command line (see
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
and
<citerefentry><refentrytitle>kernel-command-line</refentrytitle><manvolnum>7</manvolnum></citerefentry>).
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>$USER</varname></term>
<term><varname>$HOME</varname></term>
<listitem><para>User name and home
directory. Set for the units which
have <varname>User=</varname> set,
which includes user
<command>systemd</command> instances.
See
<citerefentry><refentrytitle>passwd</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>$XDG_RUNTIME_DIR</varname></term>
<listitem><para>The directory for volatile
state. Set for the user <command>systemd</command>
instance, and also in user sessions.
See
<citerefentry><refentrytitle>pam_systemd</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>$XDG_SESSION_ID</varname></term>
<term><varname>$XDG_SEAT</varname></term>
<term><varname>$XDG_VTNR</varname></term>
<listitem><para>The identifier of the
session, and the seat name, and
virtual terminal of the session. Set
by
<citerefentry><refentrytitle>pam_systemd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
for login sessions.
<varname>$XDG_SEAT</varname> and
<varname>$XDG_VTNR</varname> will be
only set when attached to a seat and a
tty.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>$MANAGERPID</varname></term>
<listitem><para>The PID of the user
<command>systemd</command> instance,
set for processes spawned by it.
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>$LISTEN_FDS</varname></term>
<term><varname>$LISTEN_PID</varname></term>
<listitem><para>Information about file
descriptors passed to a service for
socket activation. See
<citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
</para></listitem>
</varlistentry>
</variablelist>
<para>Additional variables may be configured by the
following means: for processes spawned in specific
units, use the <varname>Environment=</varname> and
<varname>EnvironmentFile=</varname> options above; to
specify variables globally, use
<varname>DefaultEnvironment=</varname> (see
<citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>)
or the kernel option
<varname>systemd.setenv=</varname> (see
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>). Additional
variables may also be set through PAM,
c.f. <citerefentry><refentrytitle>pam_env</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para>
</refsect1>
<refsect1>
<title>See Also</title>
<para>
@ -1018,7 +1109,8 @@
<citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.cgroup</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
<citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
<citerefentry><refentrytitle>exec</refentrytitle><manvolnum>3</manvolnum></citerefentry>
</para>
</refsect1>

View file

@ -456,8 +456,6 @@ static int manager_setup_signals(Manager *m) {
}
static int manager_default_environment(Manager *m) {
const char *path = "PATH=" DEFAULT_PATH;
assert(m);
if (m->running_as == SYSTEMD_SYSTEM) {
@ -468,7 +466,8 @@ static int manager_default_environment(Manager *m) {
* The initial passed environ is untouched to keep
* /proc/self/environ valid; it is used for tagging
* the init process inside containers. */
m->environment = strv_new(path, NULL);
m->environment = strv_new("PATH=" DEFAULT_PATH,
NULL);
/* Import locale variables LC_*= from configuration */
locale_setup(&m->environment);