run: expand variables also with --scope

This makes syntax be the same for commands which are started by the manager and
those which are spawned directly (when --scope is used).

Before:
$ systemd-run -q -t echo '$TERM'
xterm-256color

$ systemd-run -q --scope echo '$TERM'
$TERM

Now:
$ systemd-run -q --scope echo '$TERM'
xterm-256color

Previous behaviour can be restored via --expand-environment=no:
$ systemd-run -q --scope --expand-environment=no echo '$TERM'
$TERM

Fixes #22948.

At some level, this is a compat break. Fortunately --scope is not very widely
used, so I think we can get away with this. Having different syntax depending
on whether --scope was used or not was bad UX.

A NEWS entry will be required.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2023-04-24 10:02:30 +02:00
parent de99fadd31
commit 2ed7a221fa
2 changed files with 15 additions and 8 deletions
+6 -5
View File
@@ -177,11 +177,12 @@
<varlistentry>
<term><option>--expand-environment=<replaceable>BOOL</replaceable></option></term>
<listitem><para>Expand environment variables in command arguments. If enabled (the default), the
service manager that spawns the actual command will expand variables specified as
<literal>${<replaceable>VARIABLE</replaceable>}</literal> in the same way as in commands specied via
<varname>ExecStart=</varname> in units. Note that this is similar to, but not the same as variable
expansion in
<listitem><para>Expand environment variables in command arguments. If enabled (the default),
environment variables specified as <literal>${<replaceable>VARIABLE</replaceable>}</literal> will be
expanded in the same way as in commands specified via <varname>ExecStart=</varname> in units. With
<varname>--scope</varname>, this expansion is performed by <command>systemd-run</command> itself, and
in other cases by the service manager that spawns the command. Note that this is similar to, but not
the same as variable expansion in
<citerefentry project='man-pages'><refentrytitle>bash</refentrytitle><manvolnum>1</manvolnum></citerefentry>
and other shells.</para>