Ich kenne /etc/profile und /etc/environment, möchte aber nach dem Booten und Anmelden eine globale Umgebungsvariable festlegen. Mit global meine ich eine Umgebungsvariable, auf die jedes Programm (das unter dem aktuellen Benutzer ausgeführt wird) zugreifen kann.
Grundsätzlich möchte ich zu jedem beliebigen Zeitpunkt, beispielsweise 10 Minuten nach dem Booten, ein Skript ausführen können, das einige globale Umgebungsvariablen festlegt. Ist das möglich?
Hintergrund
Ich habe einige Probleme mit dem GPG-Agent in Ubuntu 14.04. Programme verwenden Umgebungsvariablen, um eine Verbindung zum GPG-Agent-Prozess herzustellen. Mein Problem besteht darin, dass mehrere Instanzen des GPG-Agents ausgeführt werden (von denen nur eine SSH-Unterstützung aktiviert hat). Ich möchte alle vorhandenen Instanzen des GPG-Agents beenden und eine neue mit SSH-Unterstützung starten können. Damit andere Programme jedoch auf die neue Instanz zugreifen können, müssen die Umgebungsvariablen global gemacht werden. Dies während des Startvorgangs zu tun, hat bei mir nicht funktioniert, da der andere GPG-Agent anscheinend nach meinem gestartet wird und die Umgebungsvariablen ersetzt.
Antwort1
Manchmal stehe ich vor einem ganz ähnlichen Problem. Ich habe eine Shell ssh-agent
auf einem Computer unter dem Schirm seines grafischen Desktops laufen, greife aber remote auf denselben Computer zu. Diese Shell hat nicht die Umgebungsvariablen.
Dafür verwende ich ein Skript, das nach Bash-Prozessen sucht und deren Einträge nach Variablen /proc
durchsucht . Dann erstellt es diese Einträge in Shell-Syntax neu, sodass dieses gesamte „Env Scraping Script“ in der neuen Shell mit -ed versehen werden kann./proc/<pid>/environ
SSH_AGENT_PID
SSH_AGENT_SOCK
eval
Im Wesentlichen gilt: „Gehen Sie alles durch, /proc
um herauszufinden, was andere Bash-Versionen für ihre Agentenvariablen verwenden, und reproduzieren Sie das in dieser Sitzung.“