Umgebungsvariable aktualisieren

12

Wie kann ich eine Windows-Cmd-Shell aktualisieren, nachdem ich meine Umgebungsvariablen geändert habe?

dh in bash kann ich einfach "source ~ / .bashrc" machen

Don Ch
quelle
Es gibt eine gute Antwort auf dieselbe Frage zu Stackoverflow.
Hugh Allen
Schließen Sie die Konsole und öffnen Sie eine neue.
Synetech

Antworten:

4

Es hängt wirklich davon ab, wie Ihre Umgebungsvariablen festgelegt wurden. Wenn Sie beispielsweise den Befehl "SET" in der Befehlszeile verwendet haben, wirkt sich dies nur auf die aktuelle Instanz aus. Auf der anderen Seite passen Befehle wie "SETX" den Wert der Umgebungsvariablen dauerhaft an. SETX stellt sicher, dass alle zukünftigen Instanzen von cmd das Update sehen. Dies hat keine Auswirkungen auf die lokale Umgebung.

Wenn die Umgebungsvariable von einer anderen Anwendung festgelegt wird und nicht aktualisiert wird, ist es häufig am einfachsten, den Prozess "explorer.exe" neu zu starten, sich abzumelden und wieder anzumelden oder neu zu starten. Im Wesentlichen müssen Sie den Explorer nur anweisen, die Umgebungsvariablen neu zu laden. Wenn es sich um eine von Ihnen entwickelte Anwendung handelt, z. B. ein Installationsprogramm, stellen Sie sicher, dass sie aufgerufen wird SendMessage (HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment");. Dies weist den Explorer an, seinen Cache der Umgebungsvariablen zu aktualisieren.

Dies ist wichtig, da Anwendungen, die von einem anderen Prozess gestartet wurden, ihre Umgebungsvariablen von ihrem übergeordneten Element erben. Wenn Sie cmd vom Explorer aus starten, erhalten Sie die Variablen so, wie der Explorer sie sieht.

Chris Crutchfield
quelle
1

Das Festlegen und Abrufen der Master-Umgebung in Windows ist etwas, für das die BartPE-Mitarbeiter viel Zeit aufgewendet haben.

Die Hauptumgebung wird in der Registrierung gespeichert, aber die Explorer-Shell liest dies an ihre Adresse. Von hier aus wird es an jede cmd.exe-Sitzung gesendet.

SET wirkt sich nur auf die cmd-Umgebung aus. Mit SETX können Sie die Master-Umgebung ändern, die Einstellung wird jedoch nicht in der lokalen Umgebung wiedergegeben.

Frank Westlakes CONSET und 4NT können Einträge aus der Registrierung abrufen, insbesondere jedoch keine Switches für die Master-Umgebung.

Normalerweise werden in den geladenen Fenstern die Einstellungen für die Registrierung verfolgt, in den über Minint (dh WinPE) geladenen Einstellungen jedoch nicht. Das Einstellen der Registrierung und das Lesen der Registrierung funktionieren also in beiden Fällen, aber nur normal gebootete Fenster sehen die Einstellungen und übergeben sie an ein neues cmd, exe-Programm.

wendy.krieger
quelle
0

Das hängt davon ab, wo Sie Ihre Umgebungsvariablen "einstellen". Das Äquivalent zu Ihrem Bash-Beispiel wäre wie folgt:

Datei: env.bat

set FOO=bar

und jetzt aktualisieren Sie es

% call env.bat

aber ich denke, Sie haben es über den Windows-System-Einstellungsdialog (oder wie auch immer der Name lautet) getan. Das Ergebnis ist, dass Sie die Registrierung tatsächlich geändert haben. Diese Registrierungseinstellungen werden dem Prozess zugeordnet, wenn Sie einen neuen Prozess starten.

Sie können also entweder einen neuen Prozess starten (in Ihrem Fall cmd.exe) oder die Registrierungsschlüssel lesen, die die gewünschten Änderungen widerspiegeln. Sie können auch ein kleines .bat / .cmd-Skript schreiben, das die Umgebung aus der Registrierung abruft und die aktuelle Umgebung entsprechend ändert (wenn mir die Stimmung zusagt, mache ich das nach dem Mittagessen).

Akira
quelle
0

Dies ist jetzt erheblich einfacher, Sie müssen die Shell nicht neu starten:

  1. Öffnen Sie das Startmenü und suchen Sie nach RefreshEnv.bat
  2. Lauf RefreshEnv.bat

Beachten Sie, dass Ihre neu hinzugefügten Umgebungsvariablen in jeder neuen Command / Powershell-Instanz verfügbar sind, und überprüfen Sie die Aktualisierung.

Lance McCarthy
quelle
Was meinst du jetzt? Seit welcher Version? Ist diese Fledermausdatei mit Windows verfügbar?
Máté Juhász