[systemd-devel] Environment File Question

Lennart Poettering lennart at poettering.net
Tue Dec 19 11:45:36 UTC 2017


On Mo, 18.12.17 23:22, Boyce, Kevin P [US] (AS) (Kevin.Boyce at ngc.com) wrote:

> Good Day List,
> 
> This may be a noob question but I'm trying to understand how systemd works with environment variables for system services in one place.  Reading various sites and systemd documentation only seems to be confusing me at this point.
> 
> When I set in /etc/systemd/system.conf
> DefaultEnvironment="VAR1=Test" 'VAR2=TEST 2', my service reads the
> variables correctly, but why are these not inherited by the user
> when they login?  Isn't systemd the parent of all processes and
> shouldn't that environment I specify be preserved?

This depends on how the program the puts together the login
environment does it, i.e. sshd, login, gdm, whatever it is. More often
than not they tend to clean up the environment block fully. 

> Further, what if I need expansion of these variables like
> DefaultEnvironment="VAR1=$(readlink -f /path/to/symlink)" to work
> also which complicates things.  /etc/environment does not do this.

You could use "systemctl set-environment" to set env vars to be
inherited by system services programmatically. But of course, be
careful to not introduce races.

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list