Забагато папок у змінній шляху


15

У мене виникли дивні проблеми - я не можу запускати Visual Studio, ані запускати прості команди з командного рядка, мабуть через те, що моя змінна PATH занадто довга. Тепер, коли я дивлюся на це, я бачу, що багато компаній додали свої каталоги встановлення до змінної PATH.

Мені було цікаво, чому ці компанії додали свої папки на шлях (можливо, щоб спростити виконання своїх програм?), А які необхідні та які я можу видалити. Якщо я видалю деякі з них, я не зможу запускати програми? ( Ось що наразі існує у шляху)


1
Я справді не відчуваю, що це особливо довго PATH... Що змушує вас підозрювати, що це занадто довго? Чи ВС скидає якусь помилку? Крім того, яку версію Windows ви працюєте?
bosco

@bosco Я підозрюю, що це занадто довго, оскільки командний рядок не може знайти прості команди, такі як ping. Крім того, здається, що це не рідкість із візуальною студією . Було також відзначено тут , що межа для PATH з допомогою командного рядка становить близько 2000
CC Inc

Visual studio 2012 викидає помилку "Виняток було викинуто ціллю виклику" при запуску. А коли я заглянув у ActivityLog.xml, він сказав меніThe type initializer for 'Microsoft.VisualStudio.Platform.WindowManagement.WindowManagerService' threw an exception.
CC Inc

2
Всілякі хаки та рішення у прийнятій відповіді на запитання Stack Overflow # 4405091 :)
bosco

Відповіді:


13

можна зменшити зайву кількість шляхів змінних середовища PATH, просто збережіть всю лінію в блокнот, як резервну копію та видаліть деякі та тестуйте.

Більшість з них є, тому якщо для ярлика не встановлено повний шлях для "Цільового", якщо "Пуск в" не встановлено в ярлику правильно або запуск виконується як не дивно їх програма та її частини та частини завжди знайдено. У більшості ситуацій це помилка. Ви все ще хочете повністю перевірити будь-яке використання будь-якої програми, яку ви видалили з її шляхів.
Це також дуже корисно для людей, які вводять команди в CMDprompt, навіть без компакт-диска комп'ютер скануватиме кожне місце, поки програма з таким ім'ям не знайдеться і не запуститься. Або будь-яка інша команда з такою ж назвою :-)

Цей набір шляхів WAS (anchient) обмежений менш ніж 255 (або260) charachters, які змінилися на 1024 деякий час давно, потім були виправлені назад в епоху сервера '03 для обробки 2048, і нібито він міг обробляти 8096 в деяких системах, навіть дуже давно.

Реальні обмеження, виявлені сьогодні, в які стикаються люди, полягають у CMDprompt, який має обмеження на довжину командного рядка, що включає розширення змінних та шляхів.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682653(v=vs.85).aspx тут говорить Microsoft:

"Максимальний розмір визначеної користувачем змінної середовища становить 32 767 символів. Немає технічних обмежень щодо розміру блоку середовища. Однак існують практичні обмеження залежно від механізму, який використовується для доступу до блоку. Наприклад, пакетний файл не може встановити змінну, яка перевищує максимальну довжину командного рядка. "

У цьому місці ^ вони вказують на розташування реєстру, що містить системні шляхи. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment Потрібно прочитати там решту.

CMDprompt та пакетне обмеження - 2048 характерів, колись розширені, і, як кажуть, в 4 рази більше, ніж для нових систем (потрібне цитування, оскільки люди цього не бачать)

Також див. Http://support.microsoft.com/kb/830473 , де обговорюється командний рядок та довжина партії для старих систем.

Щоб переконатися, що записи там правильні, у Вікі є таке повідомлення:
http://en.wikipedia.org/wiki/Environment_variable

% PATH% Ця змінна містить розділений крапкою з комою ( не ставте пробіли між собою ) списку каталогів, в яких інтерпретатор команд буде шукати виконуваний файл, що відповідає даній команді. Змінні середовища, які представляють шляхи, можуть вкладатись у змінну PATH, але лише на одному рівні непрямості. Якщо ця змінна середовище підпункту сама містить змінну оточення, що представляє шлях, PATH не буде належним чином розширюватися в підстановці змінної.

Наявність усіх зайвих шляхів там сповільнює певні речі, тому що його змушують шукати в усіх тих місцях, перш ніж вони здаються. Використання повних шляхів кожного разу, коли виклик елементів файлу завжди буде швидшим, навіть при пакетному пакеті чи використанні CMDprompt.

Використання старих конвенцій DOSlike 8.3 - це один із способів зменшити розмір, цей пакет /programming//a/20362922 добре працює. не забудьте (знову) зробити резервну копію початкового рядка. Дивіться також інші можливі рішення цього питання.

Ось як виглядає моє, було гірше.
% SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem;% SYSTEMROOT% \ System32 \ WindowsPowerShell \ v1.0 \; C: \ Файли програм (x86) \ QuickTime \ QTSystem \

Я б викинув швидкий час у серцебиття, і програми AMD ввели раніше розширений шлях, кинули його, Adobee мав один, жоден із них не мав значення для стандартних методів ярликів / значків GUI. Багато речей можна видалити, а потім перевірити всі функції. Якщо ви зателефонуєте до речей, ввівши підказку CMD, видалити ці шляхи не вийде.


Отже, ви кажете, що програми не вийдуть з ладу, якщо я видалю контури?
CC Inc

Windows 7 64-розрядний
CC Inc

Чи є щось там, що ви знаєте, уже видалено? Вийміть Qt, AMd та Nividia (після того, як ви створили резервну копію) мабеї і подивіться, чи достатньо він тоді? Я розмістив свою, це приблизно 140 символів.
Psycogeek

Гаразд, я побачу ..
CC Inc

3
Здається, обмеження становить 2048 символів . Після цього я не можу вводити більше символів в інтерфейс інтерфейсу змінних середовища.
Матін Ульхак

9

У мене на шляху є кілька змінних середовищ, пов'язаних з розробкою програмного забезпечення, які є важливими.

Наведене рішення для мене не допоможе, тому я пішов на розв’язки каталогів :

  • Виберіть декілька найдовших шляхів у моєму PATH (Like C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\)
  • Створіть невелику папку для зберігання моїх стиків: c: \ d \
  • Створіть короткі стики для довгих шляхів:

mklink / jc: \ d \ sql "C: \ Програмні файли (x86) \ Microsoft SQL Server \ 100 \ Інструменти \ Binn \ VSShell \ Common7 \ IDE \"

Це на 15 шляхах скоротило мій ПАТ з 2045 до 1285 символів.

Це може бути проблемою, коли ви нарешті видалите речі зі своєї машини, так як стики залишаться там на шляху, і вам доведеться їх очищати вручну.


1
У мене досить типова середовище для розробників, остання версія VS + кілька старих версій та SQL-сервер. Це поки що було найкращим рішенням. Прийнята відповідь на викидання доріжок смішна.
Меш

Що ви змінили запис шляху реєстру для C: \ Program Files (x86) \ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \ to? c: \ d \ sql?
OutOFTouch

Якщо ви маєте на увазі змінну середовища PATH, то так. Я не возився ні з якими іншими посиланнями на каталоги SQL Server.
Джуліано

Ось хороший маленький підручник за посиланнями: howtogeek.com/howto/16226/…
ofer.sheffer

1

Хоча максимально допустимий шлях у шляху набагато довший, я знайшов у Stack Overflow авторитетні відповіді на цю тему (та посилання Microsoft), які стверджують, що максимальне розширене значення шляху 2048 байтів буде працювати, і все, що довше, ніж це спричинить проблеми. Під "розширеним" я маю на увазі, що будь-які змінні, позначені% -розмежувачами, будуть вставляти свої значення, щоб вони стали розширеним значенням, а загальна розширена довжина не повинна перевищувати 2048 байт. Я помітив, що типи проблем, які він викликає (як у Windows 7):

  • Не розпізнає шляхи в кінці значення
  • Встановлення програмного забезпечення або патчів, що змінюють значення PATH, призводить до того, що значення часу виконання стане NULL, таким чином, всі види проблем під керуванням Windows, як і всі піктограми меню "Пуск", "Настільний стіл" і "Панель завдань", втрачають зображення, а також прості команди командного рядка типу " команда ping "або" ipconfig "не визнає помилок
  • Прикладні програми, що покладаються на значення PATH, не працюють

Особисто я рекомендую інші операційні системи, окрім Windows, але якщо ви на ньому застрягли, вам доведеться витратити свої години, видаляючи записи шляху, тестуючи, щоб переконатися, що він нічого не порушує, і отримати значення шляху до 2048 байт.


Незрозуміло, як відповісти на запитання автора, принаймні більше, ніж існуючі відповіді, які дають фактичні докази для резервного копіювання своїх тверджень.
Рамхаунд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.