2010-12-10 6 views
1

Ich benutze Terminal.app und iTerm, die beide das gleichzeitige Ausführen mehrerer Shells über mehrere Registerkarten und mehrere Fenster unterstützen. Ich benutze diese Funktion oft, aber wenn ich die Einstellung einer Umgebungsvariablen ändern möchte, muss ich den Befehl in der Regel einmal in jedem geöffneten Tab und Fenster ausführen - genauso wie bei neuen Tabs oder Fenstern, die ich geöffnet habe Ich öffne mich in der Zukunft. Ist es möglich, dass meine Shells miteinander kommunizieren, sodass ich eine Umgebungsvariable einmal ändern kann und diese Änderung an alle meine anderen derzeit laufenden Shells weitergegeben werden kann?Wie kann ich eine Umgebungsvariable in allen laufenden Shells ändern?

Ich weiß, dass ich env Variablen in einer Startup-Datei wie .bashrc statisch festlegen kann. Ich weiß auch, dass ich Subhüllen erben kann die Umgebung der Elternteile, entweder normal oder über screen. Keine dieser Optionen spricht diese Frage an. Diese Frage bezieht sich speziell auf das dynamische Ändern der Umgebung mehrerer derzeit laufender Shells gleichzeitig.

Idealerweise möchte ich dies erreichen, ohne den Inhalt dieser Variablen zu irgendeinem Zeitpunkt auf die Festplatte schreiben zu müssen. Einer der Gründe dafür ist, dass ich vertrauliche Informationen in einer env-Variablen wie Hash-Passwörtern festlegen und später in anderen Shells verwenden kann. Ich möchte in der Lage sein, diese Variablen einmal zu setzen, wenn ich mich anmelde, und in der Lage sein, sie in allen meinen Schalen zu beziehen, bis ich mich abmelde oder bis die Maschine neu gestartet wird. (Dies ist ähnlich, wie ssh-agent funktioniert, aber soweit ich weiß, ssh-agent wird nur SSH-Schlüssel, nicht env-Variablen.)

Ist es möglich, Shells so kommunizieren zu machen?

+0

Es tut mir leid, aber das ist eine Serverfehlerfrage. – rook

Antwort

1

Rechts. Da jeder Prozess eine eigene Kopie der Umgebungsvariablen hat, können Sie sie nicht alle auf magische Weise ändern. Wenn Sie sich jedoch genug Gedanken machen, gibt es seltsame Problemumgehungen.

Wenn Sie z. B. einen Befehl haben, den Sie zur Aktualisierung jedes einzelnen ausführen, können Sie diesen Befehl automatisch ausführen. Überprüfen Sie die bash-Manpage für PROMPT_COMMAND, die bei jedem Druck der Bash-Eingabeaufforderung einen Befehl ausführen kann. Die meisten Muscheln haben etwas ähnliches.

Soweit nicht Hash-Passwort auf der Festplatte, weil Sie es aus einer envvar anstelle von etwas wie ssh-Agent ziehen ... das wäre ein ganz anderes Thema.

1

Wenn Sie nicht Ihre eigene Shell schreiben, können Sie nicht. ssh-agent funktioniert, indem jeder SSH-Client den Schlüssel für die Schlüssel kontaktiert, aber die meisten üblichen Shells haben keinen ähnlichen Mechanismus.

Verwandte Themen