diff options
-rw-r--r-- | man/systemd-run.xml | 12 | ||||
-rw-r--r-- | src/run/run.c | 7 |
2 files changed, 12 insertions, 7 deletions
diff --git a/man/systemd-run.xml b/man/systemd-run.xml index fc8716ea79..99726dabfb 100644 --- a/man/systemd-run.xml +++ b/man/systemd-run.xml @@ -239,11 +239,15 @@ </varlistentry> <varlistentry> - <term><option>-E <replaceable>NAME</replaceable>=<replaceable>VALUE</replaceable></option></term> - <term><option>--setenv=<replaceable>NAME</replaceable>=<replaceable>VALUE</replaceable></option></term> + <term><option>-E <replaceable>NAME</replaceable>[=<replaceable>VALUE</replaceable>]</option></term> + <term><option>--setenv=<replaceable>NAME</replaceable>[=<replaceable>VALUE</replaceable>]</option></term> - <listitem><para>Runs the service process with the specified environment variable set. - Also see <varname>Environment=</varname> in + <listitem><para>Runs the service process with the specified environment variable set. This parameter + may be used more than once to set multiple variables. When <literal>=</literal> and + <replaceable>VALUE</replaceable> are omitted, the value of the variable with the same name in the + program environment will be used.</para> + + <para>Also see <varname>Environment=</varname> in <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para> </listitem> </varlistentry> diff --git a/src/run/run.c b/src/run/run.c index 993f1bc4f4..fb38571228 100644 --- a/src/run/run.c +++ b/src/run/run.c @@ -111,7 +111,7 @@ static int help(void) { " --nice=NICE Nice level\n" " --working-directory=PATH Set working directory\n" " -d --same-dir Inherit working directory from caller\n" - " -E --setenv=NAME=VALUE Set environment\n" + " -E --setenv=NAME[=VALUE] Set environment variable\n" " -t --pty Run service on pseudo TTY as STDIN/STDOUT/\n" " STDERR\n" " -P --pipe Pass STDIN/STDOUT/STDERR directly to service\n" @@ -322,8 +322,9 @@ static int parse_argv(int argc, char *argv[]) { break; case 'E': - if (strv_extend(&arg_environment, optarg) < 0) - return log_oom(); + r = strv_env_replace_strdup_passthrough(&arg_environment, optarg); + if (r < 0) + return log_error_errno(r, "Cannot assign environment variable %s: %m", optarg); break; |