[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