Wie wirkt sich "Bildschirm" auf Umgebungsvariablen aus?

8

Ich habe vor und nach einem "Bildschirm" -Aufruf einen Unterschied in "env" festgestellt. Gibt es zusätzliche Klarheit darüber, was aufgerufen wird (zum Festlegen von Umgebungsvariablen)?

Ich konnte keine klare Erklärung für eine schnelle Suche auf dem Bildschirm "Mann" sehen.

Einige gegoogelte Fragen zum Thema:

http://alan.lamielle.net/2009/03/09/environment-variables-and-gnu-screen

/superuser/105954/updating-screen-session-environment-variables-to-reflect-new-graphical-login

Ich denke, eine spezifischere Unterfrage wäre, was in einer Bildschirmsitzung nicht im Vergleich zu einer normalen Anmeldung instanziiert wird.

Kevin Lee
quelle

Antworten:

10

Ein Prozess erbt die Umgebungsvariablen vom übergeordneten Prozess. Dies bedeutet, dass beim ersten Aufruf screen(Erstellen eines neuen) eine Kopie aller Umgebungsvariablen des übergeordneten Prozesses vorhanden ist. Jetzt screenpasst / schafft einige Variablen wie COLUMNS, LINES, TERM, TERMCAP, WINDOWund STY. Sie können auch Umgebungsvariablen in Ihrem screenrcmit setenv/ anpassen oder löschen unsetenv.

Auf einigen Systemen screenist setuid oder setgid, um zu aktualisieren utmpundwtmp ; dann werden beim screenStart einige weitere Variablen aus der Umgebung entfernt , z LD_LIBRARY_PATH.

Wenn Sie eine Verbindung zu einer vorhandenen screenSitzung herstellen, werden Ihre Umgebungsvariablen nicht kopiert, da der screenProzess bereits vorhanden ist und über eigene Umgebungsvariablen verfügt (ab dem Zeitpunkt, an dem Sie den Prozess zuvor gestartet haben). Dies bedeutet, dass Ihre geänderten Umgebungsvariablen in den vom Bildschirm gestarteten Prozessen nicht sichtbar sind, da sie aus dem übergeordneten Prozess kopiert werden, der die alten Umgebungsvariablen enthält.

Ulrich Dangel
quelle