Hallo,
wie kann man eine Änderung in /etc/environment bzw. /etc/environment.d/*.conf sofort wirksam machen, ohne sich dafür neu anmelden zu müssen?
Anmeldungsdatum: Beiträge: 2472 Wohnort: Köln |
Hallo, wie kann man eine Änderung in /etc/environment bzw. /etc/environment.d/*.conf sofort wirksam machen, ohne sich dafür neu anmelden zu müssen? |
Anmeldungsdatum: Beiträge: 2074 Wohnort: Nähe München |
für die aktuelle Shell und Sub-Shells einfach mit export name=value |
(Themenstarter)
Anmeldungsdatum: Beiträge: 2472 Wohnort: Köln |
Hm, ich will die Werte doch nicht neu definieren, sondern aus den schon vorhandenen Dateien übernehmen ... und das auch nicht nur für die aktuelle Shell, sondern für alle (bestehende und später neu geöffnete) und auch für andere Programme, die nicht über eine Shell gestartet werden. |
Anmeldungsdatum: Beiträge: 13140 |
|
Supporter
Anmeldungsdatum: Beiträge: 6383 |
hilft aber nicht
Da /etc/environment aber wohl nur für LoginShells greift, klappt das nach meinem Verständnis wohl nur
|
Anmeldungsdatum: Beiträge: 13140 |
|
Supporter, Wikiteam
![]() Anmeldungsdatum: Beiträge: 7537 Wohnort: Münster |
In seiner vollen Allgemeinheit wird dieser Wunsch nicht zu erfüllen sein. Die Konfigurationsdateien für das Environment in den Verzeichnissen {/{usr/lib,run,etc},~/.config}/environment.d/*.conf werden von systemd beim Systemstart bzw. beim Start einer User-Session ausgewertet. Dazu gehört auch noch die Datei /etc/environment, die per Symlink eingebunden ist. In ganz harten Fällen muss man beim Ändern in diesen Konfigurationsdateien sogar die initrd neu generieren und natürlich das System neu starten. Als Shell-Variablen (nicht als Umgebungsvariablen!) kann man die Einstellungen aus diesen Dateien mit dem schon gezeigten Befehl . /etc/environment usw. in die laufenden Shell übernehmen, mit zusätzlichen export-Anweisungen auch für alle aus dieser laufenden Shell-Instanz gestarteten Programme, jedoch schon nicht für die laufende Instanz der Shell selber. Die beste Annäherung erreicht man durch An- und erneute Anmeldung des Benutzers, jedoch nicht auf Systemebene. Dafür wäre ein Neustart des Systems erforderlich. |
(Themenstarter)
Anmeldungsdatum: Beiträge: 2472 Wohnort: Köln |
Wäre da nicht besser sowas wie: export `cat /etc/environment` damit das auch für aus dieser Shell aufgerufene Programme und weitere Shells (z.B. im Terminal mit "Neuer Reiter") gilt? Mache ich aber meine Pfad-Erweiterung in /etc/environment.d/*.conf, z.B. in ..fslint.conf mit: PATH="$PATH/usr/share/fslint/fslint" wird wohl keiner der obigen Befehle greifen. Da müsste dann greifen: export `cat /etc/environment /etc/environment.d/*.conf` Klappt aber nicht, wie könnte das richtig gehen? |
![]() Anmeldungsdatum: Beiträge: 17411 Wohnort: Berlin |
Du meinst aber wohl PATH="$PATH:/usr/share/fslint/fslint" , oder? Allgemein ist das wohl auch deswegen keine gute Idee, weil es zu Race-Conditions führen kann - man prüft ob $FOO/bar existiert, bevor man es aufruft, aber in dem Moment, da man es aufruft, handelt es sich plötzlich um eine andere Datei, mit gegenteiligem Ergebnis zu dem, was man getestet hat. |
(Themenstarter)
Anmeldungsdatum: Beiträge: 2472 Wohnort: Köln |
(minor) ???
Uups, danke für den Fund!
Meinst Du das jetzt auf meine falsche Zeile ohne ':' bezogen? |
Anmeldungsdatum: Beiträge: 990 |
Zum Thema kann ich derzeit nicht viel Beitragen, allerdings ist es seit einigen Jahren üblich, anstelle der Backticks (`) mit $() zu arbeiten. Hierdurch lassen sich die in Subshells ausgeführten Befehle besser gegeneinander abgrenzen und man wird auch nicht halb wahnsinnig, wenn man eine Subshell in einer Subshell ausführen will. export `cat /etc/environment /etc/environment.d/*.conf` Was klappt wie nicht und mit welcher Fehlermeldung? Edit: Formatierung |
(Themenstarter)
Anmeldungsdatum: Beiträge: 2472 Wohnort: Köln |
Danke für den Tipp!
Oh, das weiß ich leider auch nicht mehr so genau, jedenfalls kam ich nicht zum beabsichtigten Ziel. Könnte tatsächlich daran gelegen haben, dass ich den ':' vergessen hatte. |
![]() Anmeldungsdatum: Beiträge: 17411 Wohnort: Berlin |
Nein, allgemein auf die Idee bezogen, das Environment zu ändern, nachdem der Rechner schon hochgefahren ist. |