Re: Accpetance of Environment Variables in Attributes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Thanks again for your in depth reply.

> it's a very different kind of language, as these specifiers are
> defined by systemd itself

Maybe someday someone will find a safe way to inject addtionally, arbitrary values into systemd. There are still some free letters left that can be prefixed with a % :)

Until then I'll stick with dedicated unit files.

Ede


Am 26.06.20 um 15:27 schrieb Lennart Poettering:
On Do, 25.06.20 20:25, Ede Wolf (listac@xxxxxxxxxxxxxxxx) wrote:

Does work, so %i works, $SOMETHING not. Different naming, different way of
invocation, I am aware of that, but in general it still the usage of
variables. And the likes of %H, %m or %v are some form of environment,
aren't they?

Sure, you could claim this was a very specific form of templating. But
it's a very different kind of language, as these specifiers are
defined by systemd itself and are not affected by the contents of the
unit file itself. I.e. you cannot go and say within a unit file that
%m shall now resolve to "foo", and that %v shall now be
"xyz". Instead, these expansions are defined by the unit file language
itself, not by the unit file stanzas you place them in. That
difference is quite major: the value of each specifier expansion is
already well-defined and fixed at the moment we begin parsing the unit
file (and its drop-ins) and their meaning does not change based on
anything you could put in the file.

Scripting languages that know env vars or generic templating languages
are quite different there: you come up with variables, you assign them
at the top and then you can resolve them further down. This implies a
top-down, iterative order of execution. And we don't want that. Use m4
for that or shell. It's what they do, what they are good in.

It's the distinction between declarative languages and iterative
languages. We provide shortcuts to some concepts, but that's really
it, otherwise we are declarative and never iterative.

If you want a shell, use a shell.

Given the dominance of systemd, this is only in parts realistic. This is not
meant to critisize systemd itself, just this rather bold statement. As shown
above, variables (specifiers, whatever you call them) are not shell
specific.

They are not shell specific. You could also use m4 if you want a
templating language, there's no shame in that. But systemd is
certainly not in the business of inventing yet another shell or
generic templating language.

Lennart

--
Lennart Poettering, Berlin


_______________________________________________
systemd-devel mailing list
systemd-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/systemd-devel



[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux