Description of problem: When a file specified by EnvironmentFile uses OPTIONS="-a -b" and the unit file uses ExecStart=foo $OPTIONS foo will be started with '-a -b', not with '-a' '-b' as would be in a shell script. This should happen only when "$OPTIONS" is used. Version-Release number of selected component (if applicable): systemd-15-1.fc15.x86_64
Quoting from systemd.service(5): "On top of that basic environment variable substitution is supported, where ${FOO} is replaced by the string value of the environment variable of the same name. Also $FOO may appear as separate word on the command line in which case the variable is replaced by its value split at whitespaces. Note that the first argument (i.e. the binary to execute) may not be a variable, and must be a literal and absolute path name." Hmm, as I read your bug report, this is actually not what happens?
*** Bug 663358 has been marked as a duplicate of this bug. ***
I don't know why ${OPTIONS} should behave differently than $OPTIONS, because it's misleading. These variables looks like shell variables and from shell's pov both are interpreted the same way. Anyway, ${var} does not work too, because $var is interpreted as "-a -b" and ${var} as "\"-a -b\"" For ${FOO} functionality from man page, "$FOO" should be used and ${FOO} should work the same way as $FOO.
$FOO is split with this assignment (not valid in shell) FOO=-a -b but not with this one FOO="-a -b" So it seems the problem is that systemd doesn't remove the quotes.
Oh, indeed. I guess that should be simple to fix.
Fixed now in git.