• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Umgebungsvariablen als User via systemd setzen

gehrke

Administrator
Teammitglied
Moin *,

ich versuche gerade, Umgebungsvariablen als User via systemd zu setzen.

https://www.freedesktop.org/software/systemd/man/environment.d.html

Code:
# useradd t42 && su - t42

$ mkdir -p ~/.config/environment.d
$ echo "ANSWER=42" > ~/.config/environment.d/test.conf

$ /usr/lib/systemd/user-environment-generators/30-systemd-environment-d-generator
ANSWER=42

$ printenv ANSWER
$ echo $ANSWER

$
Das klappt so scheinbar nicht. Was habe ich vergessen/übersehen?
TNX

Getestet:
*Fedora 31 / Gnome / Wayland
*CentOS 8 / ohne DE
 
OP
gehrke

gehrke

Administrator
Teammitglied
Bin ein paar Schritte weiter...

Das scheint grundsätzlich genau so zu funktionieren wie dokumentiert. Problematisch ist in meinem Testszenario wahrscheinlich nur gewesen, dass kein 'echtes' Login stattfindet, sondern ein 'su -' gemacht wird.

Beispielsweise bei einem Login am Gnome Desktop (Fedora 31) funktioniert das:
Code:
[t42@j2 ~]$ systemctl --user show-environment | grep ANSWER
ANSWER=42

[t42@j2 ~]$ printenv ANSWER
42

[t42@j2 ~]$ echo $ANSWER
42

Bei SSH (CentOS) sieht es noch nicht ganz so gut aus:
Code:
$ ssh t42@vj2
[t42@vj2 ~]$ systemctl --user show-environment | grep ANSWER
ANSWER=42

[t42@vj2 ~]$ printenv ANSWER

[t42@vj2 ~]$ echo $ANSWER

[t42@vj2 ~]$
 
OP
gehrke

gehrke

Administrator
Teammitglied
Hinsichtlich von bash@SSH bin ich noch einen Schritt weiter, das scheint jetzt funktional:
Code:
[t42@vj2 ~]$ echo "export $(systemctl --user show-environment | xargs)" >> .bashrc
Code:
$ ssh t42@vj2
[t42@vj2 ~]$ printenv ANSWER
42
[t42@vj2 ~]$ echo $ANSWER
42
Wobei funktional allein ja noch nicht wirklich ausreichend sein muss und tut wohl auch nur für bash. So richtig rund scheint das noch nicht umgesetzt zu sein, eher noch eine offene Baustelle.

Hier zwei hilfreiche Links zu dem Thema:
*https://in.waw.pl/~zbyszek/blog/environmentd.html
*https://github.com/systemd/systemd/issues/7641
 
OP
gehrke

gehrke

Administrator
Teammitglied
Damit tut übrigens (wenig überraschend) auch die 'su -' - Variante:
Code:
# su - t42
[t42@vj2 ~]$ printenv ANSWER
42
 
OP
gehrke

gehrke

Administrator
Teammitglied
Gräfin Klara schrieb:
Ihr solltet generell nicht auf systemd setzen!
Bitte in diesem Thread keine Grundsatzdiskussion zu systemd. Ich möchte hier ein konkretes Problem diskutieren und idealerweise auch lösen.

Falls Du eine Grundsatzdiskussion wünscht, mache bitte dazu einen eigenen Thread auf.
TNX
 
Oben