ubuntuusers.de

Umgebungsvariable

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion der Artikel Umgebungsvariable, Umgebungsvariable/Dateien.

red_trumpet

Anmeldungsdatum:
12. Januar 2009

Beiträge: 234

Wohnort: bei Mainz

Also bei mir wird ja $PATH in /etc/environment bestimmt... Vllt. sollte man für /etc/profile noch erklären, wie man da 'ne Umgebungsvariable ändert, weil das ganz 'if' kann einen grad als Anfänger aus der Bahn werfen...

lg red_trumpet

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

es ist ein Wiki. Fühl' dich frei Hand anzulegen. ☺

Gruß, noisefloor

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17622

Wohnort: Berlin

Im Wiki steht:

Änderung für einen Benutzer

Alle Umgebungsvariablen sollte man in der Datei ~/.profile setzen.

  • Achtung: Existiert eine Datei ~/.bash_profile, so wird ~/.profile von der Bash (Standard-Shell) ignoriert. Auch die Einstellungen in ~/.bashrc überschreiben in der Bash die Einstellungen aus ~/.profile.

Ob eine Datei ignoriert wird, oder ob die Einstellungen überschrieben werden, sind 2 unterschiedliche Fälle. Man kann dann nicht auch sagen.

Wenn in der Datei ein Wert definiert wird, der von der anderen nicht überschrieben wird, dann bleibt er im einen Fall sichtbar, im anderen nicht.

seit1996

Anmeldungsdatum:
18. November 2010

Beiträge: 65

Hallo,

habe einen weiteren Vorschlag für Beispiele:

human-readable BLOCK_SIZE

Viele GNU Programme (df, du, ls usw.) zeigen Größen in "blocks" an. Diese Anzeige, der block-Größe, kann man so abändern, das sie leichter zu lesen ist.

BLOCK_SIZE=human-readable 

Das Vererben (export), dieser Variable ist jedoch nicht ratsam. Damit die Ausgabe in Shell-Skripten etc. weiterhin stimmt.

Meinungen dazu?

Gruß seit1996

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

könntest du IMHO einbauen.

Gruß, noisefloor

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6497

Aktuell habe ich Variablen in /etc/profile.d/ gesetzt. Von jedem User (inkl. root) werden sie wohl ausgelesen und sind global verfügbar. Anders sieht es mit Diensten unter systemd aus → "mein" Dienst weiß nichts von den Variablen. Was ist hier zu beachten? Können wir das im Artikel ergänzen? siehe auch: https://github.com/coreos/bugs/issues/1507

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9761

Wohnort: Münster

BillMaier schrieb:

Aktuell habe ich Variablen in /etc/profile.d/ gesetzt. Von jedem User (inkl. root) werden sie wohl ausgelesen und sind global verfügbar.

  • Die Dateien im Verzeichnis /etc/profile.d/ werden aber nicht bei jedem Aufruf von bash gelesen!

  • Welche Dateien bein Start einer (Bourne-like-) Shell berücksichtig werden, hängt von der Art des Aufrufs ab. Man unterscheidet login- und non-login-shell sowie interactive- und non-interactive-shell. Das ist leider eine ziemlich unübersichtliche Angelegenheit. Man sollte daher besser nur die benutzer-spezifischen Dateien unter /home/USER/ anpassen.

  • /etc/profile.d/ wird von /etc/profile gelesen. Man sollte /etc/profile nicht verändern und eigene Anpassungen als eigene Datei in /etc/profile.d/ hinterlegen.

  • /etc/profile wird nur von login-shells gelesen.

Anders sieht es mit Diensten unter systemd aus → "mein" Dienst weiß nichts von den Variablen. Was ist hier zu beachten? Können wir das im Artikel ergänzen? siehe auch: https://github.com/coreos/bugs/issues/1507

  • Das ist genau der oben beschriebene Effekt: systemd ruft die shell eben im non-interactive Modus auf.

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6497

Hm, wollen wir das im Artikel mal differenzieren? Also gerade das unübersichtliche übersichtlich machen? Ich würde mit machen, kann aber bisher nur meine o.g. Erfahrungen einbringen. Wenn ich richtig gelesen habe ist /etc/environment dann besser, weil globaler und auch von systemd genutzt. (hab ich aber noch nicht getestet)

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9761

Wohnort: Münster

BillMaier schrieb:

Hm, wollen wir das im Artikel mal differenzieren? Also gerade das unübersichtliche übersichtlich machen?

  • Das wäre den Schweiß der Edlen wert.

Ich würde mit machen, kann aber bisher nur meine o.g. Erfahrungen einbringen.

  • Ich habe leider selbst nur einen unvollständigen Überblick.

Wenn ich richtig gelesen habe ist /etc/environment dann besser, weil globaler und auch von systemd genutzt. (hab ich aber noch nicht getestet)

  • /etc/environment ist eine System-Konfigurationsdatei, die auch andere Programme nutzen, z.B. PAM. Diese Datei sollte man nach meiner Meinung auf keinen Fall anfassen!

Bitte um Baustelle! Bearbeitung wird aber länger dauern.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

wenn eine Baustelle benötigt wird bitte hier kurz posten.

Gruß, noisefloor

Seebär

Avatar von Seebär

Anmeldungsdatum:
2. Mai 2009

Beiträge: 833

kB schrieb:

  • /etc/environment ist eine System-Konfigurationsdatei, die auch andere Programme nutzen, z.B. PAM. Diese Datei sollte man nach meiner Meinung auf keinen Fall anfassen!

Das sehe ich nicht so, dass man dies "auf keinen Fall" machen sollte. Warum? Eben weil sie "systemweit" gilt kann man hier Dinge, die systemweit gelten sollen, anlegen. Dafür ist es gedacht. Bspw. proxy-Angaben oder zentrale Environment-Variablen. Es gibt da sicherlich noch andere Stellen, die möglich wären (weiß ich grade nicht auswendig).

Zu beachten ist aber immer, dass dies wirklich nur eine reine setting-Datei ist, welche nur Einträge der Art key=value verträgt. Also nicht auf die Idee kommen hier shell-Syntax zu verwenden.

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6497

Noisefloor ist noch im Urlaubs-Mode. Daher bitte nochmal: Baustelle 😉

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6497

Seebär schrieb:

kB schrieb:

  • /etc/environment ist eine System-Konfigurationsdatei, die auch andere Programme nutzen, z.B. PAM. Diese Datei sollte man nach meiner Meinung auf keinen Fall anfassen!

Das sehe ich nicht so, dass man dies "auf keinen Fall" machen sollte. Warum? Eben weil sie "systemweit" gilt kann man hier Dinge, die systemweit gelten sollen, anlegen. Dafür ist es gedacht. Bspw. proxy-Angaben oder zentrale Environment-Variablen. Es gibt da sicherlich noch andere Stellen, die möglich wären (weiß ich grade nicht auswendig).

Zu beachten ist aber immer, dass dies wirklich nur eine reine setting-Datei ist, welche nur Einträge der Art key=value verträgt. Also nicht auf die Idee kommen hier shell-Syntax zu verwenden.

+1

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9761

Wohnort: Münster

BillMaier schrieb:

Seebär schrieb:

kB schrieb:

  • /etc/environment ist eine System-Konfigurationsdatei, die auch andere Programme nutzen, z.B. PAM. Diese Datei sollte man nach meiner Meinung auf keinen Fall anfassen!

Das sehe ich nicht so, […]

+1

  • Ihr habt gelesen, was ich schrieb? Ihr wisst, das PAM als zentrale Komponente maßgeblich die Sicherheit des Systems mit bestimmt? Ihr könnt übersehen, welche Nebeneffekte es hat, wenn man in dieser Konfigurationsdatei Einstellungen hinterlegt, die für andere Programme (shell) bestimmt sind? Ich kann das nicht! Und eine Datei, deren Auswirkungen ich nur erahnen kann, und die sicher aber nicht für die shell bestimmt ist, fasse ich aus Vorsicht nicht an.

-999

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6497

"A suitable file for environment variable settings that affect the system as a whole (rather than just a particular user) is /etc/environment." Quelle: https://help.ubuntu.com/community/EnvironmentVariables

Ich kenne zwar PAM nicht so genau. Aber ich verstehe ehrlich gesagt auch nicht, was es für ein Sicherheitsproblem darstellen sollte, wenn man da bspw. etwas einträgt wie:

ENVIRONMENT=production DATACENTER=10

Zumal vielleicht genau deine Bedenken der Grund dafür sind, warum hier nur feste Inhalte und keine Ausdrücke einer Variablen zugeordnet werden können. (Falls ich hier mit meiner Wortwahl daneben liege: Ihr wisst, was ich meine).

Gerne suche ich mit Euch einen anderen Ort, um globale Variablen zu definieren. Aber bisher zeigt in allen Quellen die Spur immer auf /etc/environment und /etc/profile.d

//edited: Nützt aber wohl für systemd auch nichts: https://github.com/coreos/bugs/issues/1507

/edited: hier ein Link bzgl. PAM https://superuser.com/a/664236

Antworten |