Dlaczego zmiany w mojej ŚCIEŻCE nie są rozpoznawane?


36

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:

Ustawienia skrótów wiersza poleceń

Dotyczy to Windows Vista Home Premium SP2.

Odpowiedzi:


30

Po uruchomieniu nowego procesu (np. Nowego wiersza polecenia) pobierze on zmienne środowiskowe z procesu, który go uruchamia. Gdy ścieżka jest aktualizowana, tylko proces przeprowadzający aktualizację może wiedzieć, że się zmieniła, a ustawienie nie propaguje się, dopóki nie zalogujesz się ponownie (w przypadku ustawień dla poszczególnych użytkowników) lub nie uruchomisz ponownie (w przypadku ustawień ogólnosystemowych)


2
Jednak główny explorerproces wykryje zmiany środowiska w rejestrze (należy do okna dialogowego rundll32) i automatycznie zaktualizuje własne środowisko. (Przynajmniej w XP to robi.) Dlatego zmiany są widoczne, gdy zaczynasz cmdod skrótu.
— grawitacja

Rowland, dostarczyłem mi wystarczających informacji, aby dokładnie ustalić, dlaczego tak się dzieje, chociaż nie odpowiedziałem całkowicie na moje pytanie. Zobacz moją własną odpowiedź, aby poznać szczegóły. Dzięki!
— Charles Roper

Dzięki za tę odpowiedź! Wszystko, co musiałem zrobić, to zamknąć wiersz polecenia i otworzyć go ponownie.
— user1477388

To było dla mnie rozwiązanie! Korzystam z Git Bash dla Windows w otulinie Multitab (ConEmu) i zastanawiałem się, dlaczego echo $PATHnie 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.
— Oliv Utilo,

27

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.exektó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.exeprocesu 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.exeprocesy 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.exechyba że zrestartuję FARR:

eksplorator procesów


3
Dlaczego moja odpowiedź została odrzucona? Jeśli jest w nim jakaś wada, daj mi znać, a spróbuję to naprawić.
— Charles Roper

ma wielki sens.
— lwpro2
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.