Gdy aktualizuję moją ŚCIEŻKĘ za pomocą wbudowanego okna dialogowego Zmienne środowiskowe lub czegoś takiego jak Edytor ścieżki , a następnie otwieram wiersz polecenia, zmiany w mojej ŚCIEŻCE nie zostaną zarejestrowane w konsoli, w zależności od tego, gdzie wiersz polecenia był zaczęło się od.
Na przykład, jeśli edytuję ŚCIEŻKĘ, a następnie uruchamiam cmd.exe z menu Start lub skrót na pulpicie, to moja ŚCIEŻKA wygląda dobrze: została pomyślnie zaktualizowana; Jeśli jednak uruchomię program cmd.exe ze skrótu w innym miejscu niż Menu Start lub Pulpit, nowa ŚCIEŻKA nie zostanie odczytana i zamiast tego otrzymam starą ścieżkę. To jest bardzo dziwne.
Próbowałem uruchomić wiersz polecenia ze skrótu na pulpicie i działa dobrze; Następnie kopiuję ten sam skrót do podfolderu na pulpicie i otrzymuję problem nieaktualności PATH.
Zdaję sobie sprawę, że trudno to wyjaśnić, dlatego stworzyłem screencast, aby pokazać ten problem w działaniu .
Oto zrzut ekranu skrótu wiersza polecenia, jak widać na zrzucie ekranu:
Dotyczy to Windows Vista Home Premium SP2.
źródło
explorer
proces wykryje zmiany środowiska w rejestrze (należy do okna dialogowegorundll32
) i automatycznie zaktualizuje własne środowisko. (Przynajmniej w XP to robi.) Dlatego zmiany są widoczne, gdy zaczynaszcmd
od skrótu.echo $PATH
nie działa. Zakładałem, że będzie świeży, ale nie wyszło, dopóki nie zamknąłem wszystkich kart Git Bash i ConEmu.Jak sugeruje Rowland, rozpoczynając nowy proces, odczyta zmienne środowiskowe z procesu, który go uruchamia. Dlatego podczas uruchamiania wiersza polecenia z menu Start lub pulpitu odczytuje zmienne środowiskowe, z
explorer.exe
których, jak sugeruje grawitacja, wykrywa zmiany w ustawieniach środowiska w rejestrze i dlatego widzę moją nową ŚCIEŻKĘ w wierszach poleceń uruchamianych z Pulpit lub menu Start.Powodem nie widzę aktualizacje do mojego ścieżka w screencast napisałem to dlatego, że początkowo rozpoczęła oknie Eksploratora użyciu Farr dokonywania
FindAndRunRobot.exe
procesu macierzystego. FARR nie wykrywa automatycznie zmian środowiska, więc odrodzone z niego procesy potomne nie pobierają nowej ŚCIEŻKI. Miałem także opcję „ Uruchom okna folderów w oddzielnym procesie ” w Eksploratorze, co oznacza, że wszystkie okna explorer.exe otworzyłem po pierwszym otworzonym przez FARR, w którym również dzieci FARR .Wyłączając opcję „ Uruchamiaj okna folderów w osobnym procesie ”, nowe
explorer.exe
procesy nie są tworzone w FARR, co rozwiązuje mój problem. Jednak uruchamiam również okna konsoli i inne rzeczy bezpośrednio z FARR; te również uzyskują stare ustawienia środowiska. Jeśli zrestartuję FARR, wówczas nowe ustawienia środowiska są propagowane.Oto zrzut ekranu Process Explorer pokazujący procesy odradzane z FARR. Żaden z tych procesów nie otrzymuje nowych ustawień środowiska z najwyższego poziomu,
explorer.exe
chyba że zrestartuję FARR:źródło