Probleme beim Festlegen von Umgebungsvariablen (insbesondere PATH) und der Verwendung von CD mit ihnen in cmd in Windows 10

Probleme beim Festlegen von Umgebungsvariablen (insbesondere PATH) und der Verwendung von CD mit ihnen in cmd in Windows 10

Ich verfolge eineLernprogrammum Apache Storm einzurichten. (Das dient nur dem Kontext – für meinen Fehler ist es nicht wirklich wichtig.)

Es fordert mich also auf, einige Umgebungsvariablen festzulegen, und zwar %JAVA_HOME%und %STORM_HOME%als C:\Java\jdk1.8.0_60\bzw. C:\storm-0.9.1-incubating-SNAPSHOT-12182013\. Ich habe so etwas noch nie zuvor gemacht, also habe ich nachgeschaut, wie das geht, und Folgendes ausgeführt:

C:\>setx %JAVA_HOME% C:\JAVA\jdk1.8.0_60\

und es ergab:SUCCESS: Specified value was saved.

Dann habe ich Folgendes getan:

C:\>setx %STORM_HOME% C:\storm-0.9.1-incubating-SNAPSHOT-12182013\

und es kam das gleiche heraus:SUCCESS: Specified value was saved.

Dann sagt das Tutorial, dass man hinzufügen soll %STORM_HOME%\bin;%JAVA_HOME%\bin;C:\Python27;C:\Python27\Lib\site-packages\;C:\Python27\Scripts\;. PATHIch habe es eingegeben, C:\>PATHum zu sehen, was es derzeit ist, und es kam:

PATH=C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\

Also dachte ich, ich könnte etwas dazu beitragen, indem ich

C:\>setx PATH C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;%STORM_HOME%\bin;%JAVA_HOME%\bin;C:\Python27;C:\Python27\Lib\site-packages\;C:\Python27\Scripts\; 

Mit anderen Worten, ich habe gerade versucht, es aufzurufen setxund PATHes auf den aktuellen Wert einzustellen und die Dinge, die im Tutorial stehen, an das Ende anzuhängen. Es gab SUCCESS: Specified value was saved.jedoch Folgendes, wenn ich Folgendes eingebe:

C:\>PATH

es gibt zurück, was es ursprünglich war (das Zeug, das ich anzuhängen versuchte, ist nicht da). Ich habe eine andere Methode ausprobiert. Ich habe

C:\>PATH=%PATH%;%STORM_HOME%\bin;%JAVA_HOME%\bin;C:\Python27;C:\Python27\Lib\site-packages\;C:\Python27\Scripts\;

Als ich es dann eingab, C:\>PATHwurde der vollständige Pfad mit den angehängten Daten zurückgegeben, die ich anhängen wollte.

Das Problem, vor dem ich jetzt stehe, ist die Verwendung dieser Variablen. Wenn ich eingebe

C:\>cd %STORM_HOME%

es heißt, The system cannot find the path specified.ich hätte versucht, meinen Computer neu zu starten, aber PATHer wurde zurückgesetzt und ich habe immer noch den gleichen Fehler.

Antwort1

@DavidPostill hat Recht, löst Ihr Problem aber nicht wirklich. Die eigentliche Antwort ist viel einfacher: Die Eingabeaufforderung erhält wie jedes Programm seine Umgebungsvariable beim Start. Wenn Sie eine dauerhafte Umgebungsvariable festlegen (entweder pro Benutzer oder systemweit), ändern Sie die Registrierungswerte, die die Umgebungsvariablen für zukünftige Prozesse bestimmen.Sie ändern eigentlich keine Umgebungsvariablen in deraktuellüberhaupt einen Prozess!

Aus der SETX-Hilfedokumentation ( setx /?):

 2) On a local system, variables created or modified by this tool
    will be available in future command windows but not in the
    current CMD.exe command window.

Es gibt zwei Möglichkeiten, dies zu beheben. Die einfache Möglichkeit besteht darin, wie in der Dokumentation angegeben, eine neue Instanz von CMD zu starten. Das ist zwar einfach genug, aber dann haben Sie Ihren Befehlsverlauf usw. nicht mehr. Die kompliziertere Möglichkeit besteht darin, die lokalen Umgebungsvariablen festzulegen (den setBefehl zu verwenden). Die beste Möglichkeit hierfür besteht eigentlich darin, zuerst zu verwenden und dann mit den aktuellen Umgebungsvariablen setaufzurufen . Hier ist ein Beispiel für das, was Sie oben tun:setx

REM Set the local version of JAVA_HOME
set JAVA_HOME=C:\JAVA\jdk1.8.0_60\
REM Set the local version of STORM_HOME
set STORM_HOME=C:\storm-0.9.1-incubating-SNAPSHOT-12182013\
REM Append the new values to PATH
set PATH=%PATH%;%STORM_HOME%\bin;%JAVA_HOME%\bin;C:\Python27;C:\Python27\Lib\site-packages\;C:\Python27\Scripts\;
REM Do whatever checks you want to do to confirm that those are set correctly
cd %STORM_HOME%
REM Now, save the current (local) values of the environment variables
REM to persistent storage (registry)
setx JAVA_HOME %JAVA_HOME%
setx STORM_HOME %STORM_HOME%
setx PATH %PATH%

Beachten Sie die Verwendung von %Zeichen. Sie verwenden sie, wenn Sie eine Umgebungsvariable erweitern möchten, nicht, wenn Sie auf eine verweisen möchten. Die setxobigen Zeilen werden verarbeitet als „Setzen Sie die benutzerweite Umgebungsvariable JAVA_HOME auf den aktuellen lokalen Wert von JAVA_HOME dieses Prozesses“, was gleichbedeutend ist mit „Setzen Sie die persistente Umgebungsvariable JAVA_HOME auf C:\JAVA\jdk1.8.0_60\“, weil %JAVA_HOME% im aktuellen Prozess auf diesen Wert erweitert wird.

Antwort2

Warum hat SETX meinen PATH nicht aktualisiert?

setx PFAD C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;%STORM_HOME%\bin;%JAVA_HOME%\bin;C:\Python27;C:\Python27\Lib\site-packages\;C:\Python27\Scripts\;

Ihre setxSyntax ist falsch:

  • "Setzen Sie den zweiten Parameter (den „Wert“) in Anführungszeichen .

    Der zweite Parameter sollte in Anführungszeichen gesetzt werden, wenn er Leerzeichen enthält und %PATH%enthält fast immer Leerzeichen.

Sie sollten Folgendes verwenden:

setx PATH "%PATH%;%STORM_HOME%\bin;%JAVA_HOME%\bin"

Oder:

setx PATH "%STORM_HOME%\bin;%JAVA_HOME%\bin;%PATH%"

Syntax

SETX [/s Computer [Credentials]] Variable Value [/m]

SETX [/s Computer [Credentials]] [Variable] /k RegistryPath [/m]

SETX [/s Computer [Credentials]] /f FileName {[Variable] {/a L,T | /r oL,oT "SearchString"} [/m] | /x} [/d Delimiters]

Quellesetx


Weitere Informationen

  • Ein AZ-Index der Windows CMD-Befehlszeile- Ein hervorragendes Nachschlagewerk zu allem, was mit der Windows-Eingabeaufforderung zu tun hat.
  • setx- Umgebungsvariablen dauerhaft festlegen. SETX kann zum Festlegen von Umgebungsvariablen für die Maschine (HKLM) oder den aktuell angemeldeten Benutzer (HKCU) verwendet werden.

verwandte Informationen