Zbyt wiele folderów w zmiennej ścieżki

15

Wystąpił dziwny problem - nie mogę uruchomić programu Visual Studio ani uruchamiać prostych poleceń z wiersza polecenia, najwyraźniej z powodu zbyt długiej zmiennej PATH. Teraz, gdy na to patrzę, widzę, że wiele firm dodało swoje katalogi instalacyjne do zmiennej PATH.

Zastanawiałem się, dlaczego te firmy dodały swoje foldery do ścieżki (być może, aby ułatwić uruchamianie swoich programów?), Które są konieczne i które mogę usunąć. Jeśli usunę niektóre z nich, czy nie będę mógł uruchomić programów? ( Oto, co obecnie istnieje na ścieżce)

CC Inc
źródło
1
Naprawdę nie wydaje mi się, żeby to było szczególnie długie PATH... Co prowadzi cię do podejrzeń, że to za długo? Czy VS rzuca jakiś błąd? Ponadto z jakiej wersji systemu Windows korzystasz?
bosco
@ bosco Podejrzewam, że jest za długi, ponieważ wiersz polecenia nie może znaleźć prostych poleceń, takich jak ping. Wydaje się również, że nie jest to rzadkie w studiu wizualnym . Wspomniano również tutaj, że limit ścieżki PATH przy użyciu wiersza polecenia wynosi około 2000.
CC Inc
Program Visual Studio 2012 zgłasza błąd „Wystąpił wyjątek przez cel wywołania” podczas uruchamiania. Kiedy przejrzałem plik ActivityLog.xml, powiedział miThe type initializer for 'Microsoft.VisualStudio.Platform.WindowManagement.WindowManagerService' threw an exception.
CC Inc
2
Wszelkiego rodzaju hacki i rozwiązania w przyjętej odpowiedzi na pytanie przepełnienia stosu # 4405091 :)
bosco

Odpowiedzi:

13

możliwe jest zmniejszenie nadmiernej ilości ścieżek w zmiennych środowiskowych PATH, wystarczy zapisać całą linię w notatniku, jako kopię zapasową, usunąć niektóre i przetestować.

Większość z nich istnieje, więc jeśli skrót nie ma pełnej ścieżki do „Celu”, jeśli „Początek w” nie jest ustawiony poprawnie w skrócie lub uruchomienie jest dziwne, program i jego części i elementy są zawsze znaleziony. W większości sytuacji jest bezpieczny. Nadal będziesz chciał w pełni przetestować użycie dowolnego programu, który usunąłeś jego ścieżki.
Jest to również bardzo przydatne dla osób, które wpisują polecenia w CMDprompt, nawet bez dysku CD, komputer będzie skanował każdą lokalizację, dopóki program o tej nazwie nie zostanie znaleziony i uruchomiony. Lub dowolne inne polecenie o tej samej nazwie :-)

Ten zestaw ścieżek WAS (kotwiczący) był ograniczony do mniej niż 255 znaków (lub 260), które zmieniły się kiedyś na 1024 jakiś czas temu, a następnie zostały załatane z powrotem w erze server'03, aby obsłużyć 2048, i podobno mógł obsłużyć 8096 w niektórych systemach, nawet dawno temu.

Rzeczywiste odkryte dziś ograniczenia, na które napotykają ludzie, znajdują się w CMDprompt, który ma limit długości ciągu poleceń, który obejmuje rozszerzanie zmiennych i ścieżek.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682653(v=vs.85).aspx tutaj Microsoft mówi:

„Maksymalny rozmiar zmiennej środowiskowej zdefiniowanej przez użytkownika wynosi 32 767 znaków. Nie ma technicznych ograniczeń co do wielkości bloku środowiska. Istnieją jednak praktyczne ograniczenia w zależności od mechanizmu używanego do uzyskania dostępu do bloku. Na przykład plik wsadowy nie można ustawić zmiennej dłuższej niż maksymalna długość wiersza poleceń. ”

W tej lokalizacji ^ wskazują lokalizację rejestru, która zawiera ścieżki systemowe. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment Musisz tam przeczytać resztę.

Po rozszerzeniu CMDprompt i ograniczenie partii wynosi 2048 znaków i mówi się, że jest czterokrotnie wyższe w przypadku nowszych systemów (wymaga cytowania, ponieważ ludzie tego nie widzą)

Zobacz także http://support.microsoft.com/kb/830473 , w którym omówiono wiersz polecenia i długość partii dla starszych systemów.

Aby upewnić się, że wpisy są tam poprawne, Wiki ma do powiedzenia:
http://en.wikipedia.org/wiki/Environment_variable

% PATH% Ta zmienna zawiera rozdzielaną średnikami ( nie umieszczaj spacji ) listę katalogów, w których interpreter poleceń wyszuka plik wykonywalny pasujący do podanego polecenia. Zmienne środowiskowe reprezentujące ścieżki mogą być zagnieżdżone w zmiennej PATH, ale tylko na jednym poziomie pośrednictwa. Jeśli sama ta zmienna środowiskowa podścieżki zawiera zmienną środowiskową reprezentującą ścieżkę, PATH nie rozwinie się prawidłowo w podstawieniu zmiennej.

Posiadanie tam wszystkich dodatkowych ścieżek spowalnia pewne rzeczy, ponieważ jest zmuszony szukać tych wszystkich miejsc, zanim się poddaje. Używanie pełnych ścieżek za każdym razem, gdy wywoływanie elementów pliku będzie zawsze szybsze, nawet podczas grupowania lub korzystania z polecenia CMD.

Używanie starych konwencji DOS jak 8.3 jest jednym ze sposobów zmniejszenia rozmiaru, ta partia Batch /programming//a/20362922 działa dobrze. pamiętaj (ponownie) o utworzeniu kopii zapasowej oryginalnego ciągu. Zobacz także inne możliwe rozwiązania tego pytania.

Oto jak wygląda mój, było gorzej.
% SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem;% SYSTEMROOT% \ System32 \ WindowsPowerShell \ v1.0 \; C: \ Program Files (x86) \ QuickTime \ QTSystem \

Rzuciłbym szybki czas w mgnieniu oka, a programy AMD umieściły tam przedłużyć ścieżkę, rzucił ją, Adobee miał jedną, żadna z nich nie miała znaczenia dla standardowych metod skrótów / ikon GUI. Wiele rzeczy można usunąć, a następnie przetestować wszystkie funkcje. Jeśli wywołujesz różne rzeczy, wpisując polecenie CMD, usunięcie tych ścieżek nie będzie działać.

Psycogeek
źródło
Więc mówisz, że aplikacje nie zawiodą, jeśli usunę ścieżki?
CC Inc
Windows 7 64-bit
CC Inc
Czy jest tam coś, co wiesz, że zostało już odinstalowane? Wyjmij Qt, AMd i Nividia (po utworzeniu kopii zapasowej) mabey i sprawdź, czy jest wystarczająco krótki? Mój zamieścił, ma około 140 znaków.
Psycogeek,
Dobra, zobaczę ..
CC Inc
3
Wydaje się, że ograniczenie to 2048 znaków . Po tym punkcie nie mogę już wprowadzać żadnych znaków do GUI zmiennych środowiskowych.
Mateen Ulhaq
9

Na mojej ścieżce mam kilka zmiennych środowiskowych związanych z programowaniem, z których wszystkie są ważne.

Powyższe rozwiązanie nie działałoby dla mnie, więc wybrałem połączenia katalogów :

  • Wybierz jedne z najdłuższych ścieżek w mojej ŚCIEŻCE (jak C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\)
  • Utwórz mały folder do przechowywania moich skrzyżowań: c: \ d \
  • Utwórz krótkie skrzyżowania dla długich ścieżek:

mklink / jc: \ d \ sql "C: \ Program Files (x86) \ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \"

Wykonanie tego na 15 ścieżkach zmniejszyło moją ŚCIEŻKĘ z 2045 do 1285 znaków.

Może to być problem, gdy w końcu odinstalujesz rzeczy ze swojego komputera, ponieważ skrzyżowania pozostaną tam na ścieżce i będziesz musiał je wyczyścić ręcznie.

Juliano
źródło
1
Mam dość typowe środowisko programistyczne, najnowsze VS + kilka starszych wersji i zainstalowany serwer SQL. To jak dotąd najlepsze rozwiązanie. Przyjęta odpowiedź na wyrzucanie ścieżek jest absurdalna.
Siatka
Co zmieniłeś wpis ścieżki rejestru dla C: \ Program Files (x86) \ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \ na? c: \ d \ sql?
OutOFTouch
Jeśli masz na myśli zmienną środowiskową PATH, to tak. Nie zadzierałem z żadnymi innymi odniesieniami do katalogów SQL Server.
Juliano,
Oto ładny mały samouczek na temat twardych linków: howtogeek.com/howto/16226/…
ofer.sheffer
1

Podczas gdy maksymalne dopuszczalne na ścieżce jest znacznie dłuższe, znalazłem w autorytatywnych odpowiedziach na przepełnienie stosu w tym temacie (i referencjach Microsoft), które stwierdzają, że maksymalna rozszerzona wartość ścieżki wynosząca 2048 bajtów będzie działać i cokolwiek dłuższego spowoduje to problemy. Przez „rozwinięty” rozumiem, że wszelkie zmienne oznaczone ogranicznikami% będą miały wstawione wartości, aby stały się wartością rozwiniętą, a całkowita rozszerzona długość nie może przekraczać 2048 bajtów. Zauważyłem, że rodzaje problemów, które powoduje (od Windows 7) to:

  • Nie rozpoznaje ścieżek na końcu wartości
  • Instalacja oprogramowania lub poprawek modyfikujących wartość PATH powoduje, że wartość środowiska wykonawczego staje się NULL, co powoduje różnego rodzaju problemy z systemem Windows, takie jak wszystkie ikony menu Start, pulpitu i paska zadań tracą obrazy, a proste polecenia wiersza polecenia, takie jak „ ping ”lub„ ipconfig ”show polecenie nierozpoznane błędy
  • Aplikacje oparte na wartości PATH zawodzą

Osobiście polecam inne systemy operacyjne oprócz Windows, ale jeśli utkniesz na nim, musisz spędzić godziny na usuwaniu wpisów ścieżki, testowaniu, aby upewnić się, że nic nie psuje, i sprowadzić wartość ścieżki do 2048 bajtów.

Jay Imerman
źródło
Nie jest jasne, w jaki sposób odpowiedź ta odpowiada na pytanie autora, przynajmniej więcej, niż istniejące odpowiedzi, które dostarczają rzeczywistych dowodów na poparcie ich oświadczeń.
Ramhound