[systemd-devel] A sh -c '${name} and $name' are treated inconsistently within a .service unit

u34 at net9.ga u34 at net9.ga
Thu Aug 27 16:11:37 UTC 2020


Consider 

[Unit]
Description=Is it looking for ${} construct in the wrong place?
[Service]
Type=oneshot
ExecStart=/bin/bash -c 'set -x; declare -r str="1 2"; echo ${str}; echo $str; exit 0;'

When ran, the journal has:

bash[14190]: + declare -r 'str=1 2'
bash[14190]: + echo
bash[14190]: + echo 1 2
bash[14190]: 1 2
bash[14190]: + exit 0

Note the top bash[14190]: + echo line. It has no arguments. Since the other echo line
has its 1 2 arguments, I find this behaviour inconsistent. And surprising. As such, I
think this is a bug.
It could be that the ${NAME} construct is looked for in the environment. But then, why 
$NAME works in the script, but not ${NAME}?

In addition, for the top bash[14190]: + echo line, isn't there a missing empty, just
[bash[14190]:, line?

Same results were obtained with systemd 241-7 and 246.2.

u34.


More information about the systemd-devel mailing list