Jak dołączyć zmienne środowiskowe zdefiniowane przez użytkownika do zmiennej systemowej PATH w systemie Windows 7?

9

Mam dwie zmienne zdefiniowane przez użytkownika:

ANT_HOME ustawiony na% USERPROFILE% \ Developer \ Tools \ Apache \ Apache Ant \ apache-ant-1.8.2 JAVA_HOME ustawiony na C: \ Program Files \ Java \ jdk1.6.0_23

Chcę dodać te ścieżki do zmiennej systemowej, aby uzyskać dostęp do plików wykonywalnych w ich folderach bin. próbowałem

ŚCIEŻKA ustawiona na [inne ścieżki];% ANT_HOME% \ bin;% JAVA_HOME% \ bin

To jednak nie działa. Kiedy otwieram wiersz polecenia i echo% PATH%, zmienne użytkownika nie są rozwijane . Zatem ścieżka pokazuje dosłownie;% ANT_HOME% \ bin;% JAVA_HOME% \ bin

Wydaje mi się, że dobrze to działa na moich starych systemach Windows XP. Jak to skonfigurować w systemie Windows 7?

Michael Prescott
źródło
Właśnie znalazłem artykuł pomocy technicznej Microsoft z 2007 roku opisujący błąd w Shell32.dll. Dodałem zmienną PATH do mojej listy zmiennych użytkownika z PATH ustawioną na% PATH%;% ANT_HOME% \ bin;% JAVA_HOME% \ bin i obejrzałem ten problem. Nie lubię ustawiać go tylko dla mojego użytkownika, ale jakoś mój system przedstawia symptom tego starego błędu i nie widzę jeszcze lepszej odpowiedzi. Artykuł znajduje się na stronie: support.microsoft.com/kb/329308
Michael Prescott

Odpowiedzi:

5

UPDATE NO.2 - Teraz do rzeczywistego pytanie: Dlaczego zagnieżdżone, zmienne utworzone przez użytkownika nie rozwijać?

Istnieją pewne ogólne problemy dotyczące rozszerzania zmiennych w systemie Windows. Natknąłem się już na ten sam problem i nie znalazłem żadnych wyraźnych, powtarzalnych okoliczności - poziom rekurencji, przy którym rozszerzenie się nie udaje, nie jest spójny, postacie specjalne nie wydają się odgrywać żadnej roli itp.

Jedynym wykonalnym obejściem, jakie znalazłem, jest dodanie poziomu rekurencji zmiennych według poziomu rekurencji. Oznacza to: Spróbuj usunąć wszystkie zmienne, które chcesz zagnieździć ze sobą (w tym wywołania PATH do zmiennych zdefiniowanych przez użytkownika), a następnie uruchom od nowa. Zdefiniuj podstawowe zmienne (itp. ANT-HOME), zatwierdź, sprawdź, czy jest rozwinięty, jeśli tak, przejdź do następnego poziomu zatwierdzenia, sprawdź ... masz pomysł.

ZAKTUALIZOWANA ODPOWIEDŹ - Definiowanie stałych zmiennych środowiskowych za pomocą CLI i GUI - Przewiń w dół, aby uzyskać oryginalną odpowiedź

Metoda GUI:

W systemie Windows 7 po prostu wpisz „system” w wierszu polecenia META, a zobaczysz wpis „Edytuj zmienne środowiska systemowego”. Następnie kliknij „Zmienne środowiskowe”. Tam możesz albo edytować zmienną systemową PATH (dolna lista), albo dodać / edytować nową zmienną PATH do zmiennych środowiskowych użytkownika.

Metoda wiersza poleceń:

Aby trwale zmienić zmienne środowiskowe, musisz użyć polecenia SETX w wierszu polecenia systemu Windows. W przeciwieństwie do innych wersji systemu Windows, jest on wbudowany w system Windows 7. Jego składnia różni się bardzo od SET, ale jest również potężna. Musisz jednak zachować ostrożność, łatwo jest zepsuć zmienne za pomocą SETX.

  • Domyślnie zmieniasz zmienne użytkownika . Możesz mieć zmienną środowiskową użytkownika PATH, która na szczęście współistnieje ze zmienną systemową PATH. Jeśli jeszcze go nie zdefiniowałeś, zrób to, wpisując:SETX PATH yourpath

  • Możesz także dodać wartość do zmiennej systemowej PATH. Aby to zrobić, musisz najpierw wywołać wiersz komend z uprawnieniami administratora. Aby to zrobić, naciśnij klawisz Meta (Windows), wpisz cmdi naciśnij CTRL+ SHIFT+ ENTERi potwierdź okno dialogowe UAC.

Aby dodać nowe wartości do ścieżki, możesz teraz wprowadzić

setx path "%path%;yournewpath" /m

Ważne jest przestrzeganie tej składni! Jeśli najpierw nie podasz% path%, wszystkie istniejące wartości ścieżki zostaną utracone i zastąpione tylko nową ścieżką. Przełącznik / m na końcu ustawia zmienną w środowisku systemowym.

Pamiętaj, że musisz użyć nowego wiersza poleceń, aby skorzystać z nowej zmiennej.

W witrynie TechNet znajduje się również pełne odniesienie do SETX .

OLD ANSWER Polecenie SET aktualizuje zmienne tylko na czas trwania bieżącej sesji wiersza poleceń.

Prawidłowa składnia dodawania wartości do zmiennej to „set [zmienna] =% [zmienna]%; [nowa wartość]„

Zauważ, że po lewej stronie znaku równości musisz pominąć znaki procentu!

Źródło: odniesienie do wiersza polecenia TechNet dla systemu Windows Server

Tobias Plutat
źródło
1
Dziękuję za bardzo szczegółową odpowiedź. Osobiście zawsze wolałem metodę GUI, ponieważ myślę, że łatwiej jest komunikować się z moim zespołem. Dla jasności podkreśliłem problem, który mam w moim oryginalnym poście. Zmienne użytkownika nie rozwijają się w systemie Windows 7, podobnie jak w systemie Windows XP. Czy to już nie działa, czy powinienem sprawdzać ustawienia zabezpieczeń lub inne ustawienia administratora systemu, które mogą blokować zwykłe zachowanie?
Michael Prescott
To bardzo fajny sposób na powiedzenie „Jesteś całkowicie poza celem”;)
Tobias Plutat
... a teraz moje 2 centy na to pytanie. Zobacz najnowszą edycję odpowiedzi.
Tobias Plutat
1

Artykuł pomocy technicznej Microsoft z 2007 roku - numer 329308 - opisuje błąd w Shell32.dll, który jest przyczyną tego problemu. Rozwiązaniem jest dodanie PATHzmiennej do listy zmiennych użytkownika, która jest ustawiona na

%ANT_HOME%\bin;%JAVA_HOME%\bin

To działało wokół problemu. Nie lubię ustawiać go tylko dla mojego użytkownika, ale jakoś mój system wykazuje objawy tego starego błędu i nie widzę jeszcze lepszej odpowiedzi.

Michael Prescott
źródło