machinectl: allow --setenv=FOO

This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2021-08-10 17:28:47 +02:00
parent 0337b3d51c
commit 89bf86e015
2 changed files with 12 additions and 14 deletions

View file

@ -712,14 +712,16 @@
</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>When used with the <command>shell</command> command, sets an environment
variable to pass to the executed shell. Takes an environment variable name and value,
separated by <literal>=</literal>. This switch may be used multiple times to set multiple
environment variables. Note that this switch is not supported for the
<command>login</command> command (see below).</para></listitem>
<listitem><para>When used with the <command>shell</command> command, sets an environment variable for
the executed shell. This option 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>Note that this option is not supported for the <command>login</command> command.
</para></listitem>
</varlistentry>
<varlistentry>

View file

@ -2510,7 +2510,7 @@ static int help(int argc, char *argv[], void *userdata) {
" --kill-who=WHO Who to send signal to\n"
" -s --signal=SIGNAL Which signal to send\n"
" --uid=USER Specify user ID to invoke shell as\n"
" -E --setenv=VAR=VALUE Add an environment variable for shell\n"
" -E --setenv=VAR[=VALUE] Add an environment variable for shell\n"
" --read-only Create read-only bind mount\n"
" --mkdir Create directory before bind mounting, if missing\n"
" -n --lines=INTEGER Number of journal entries to show\n"
@ -2765,13 +2765,9 @@ static int parse_argv(int argc, char *argv[]) {
break;
case 'E':
if (!env_assignment_is_valid(optarg))
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"Environment assignment invalid: %s", optarg);
r = strv_extend(&arg_setenv, optarg);
r = strv_env_replace_strdup_passthrough(&arg_setenv, optarg);
if (r < 0)
return log_oom();
return log_error_errno(r, "Cannot assign environment variable %s: %m", optarg);
break;
case ARG_MAX_ADDRESSES: