Системная и пользовательская переменная окружения PATH... winmerge работает, только если я добавлю путь к пользователю PATH
Если я добавлю C:\Program Files (x86)\WinMerge
в переменную User PATH
(щелкнув правой кнопкой мыши по компьютеру → расширенные системные настройки → переменные окружения), как только я открою новую оболочку CMD, WinmergeU.exe не будет распознан. Если я добавлю этот путь к переменной System PATH
, WinmergeU.exe будет правильно распознан. Хотя между пользователем и системой не было никакой разницы, кроме того, что если я установлю ее на System, все пользователи ее увидят, а пользователь PATH
- локальный. Я делаю что-то неправильно?
ИЗМЕНИТЬ 1:
В следующем примере вы можете увидеть сначала случай, когда C:\Program Files (x86)\WinMerge
добавляется к переменной System PATH
(но не к пользователю), а затем, когда она добавляется к переменной User PATH
(но не к система). В первом случае окно Winmerge запускается правильно (не показано), и, как вы можете видеть, путь показан командой echo% PATH%. Во втором случае он не запускается, и путь не отображается эхом% PATH%. (обратите внимание, что я четко подтвердил OK и закрыл окна переменных окружения перед тем, как сделать эти снимки экрана, и я открыл новый cmd сразу после изменения PATH и нажатия ok). Эта проблема может быть связана с моим вопросом здесь (Увеличивает ли echo% PATH% только системные или пользовательские переменные?), но поскольку это может быть не я, я написал два другой вопрос.
![SYSTEM]()
![USER]()
Ответы
Ответ 1
Вы должны получать что-то неправильно или иметь проблемы с окружающей средой с вашей машиной. Добавление переменной среды PATH
пользователя приводит к ее объединению в среду нового процесса.
Обновление: Возможно, этот комментарий из темы MSDN по переменным окружения может быть уместным:
Выяснилось, что в Windows Server 2003, когда системный PATH передает 1920 символов, переменная среды PATH пользователя больше не сливается с ней, чтобы установить переменную среды процесса PATH, хотя полная система PATH (даже если она больше) будет быть включенным в переменную процесса PATH.
Ответ 2
Для 16.6 я также подтвердил эту проблему как длину пути. В командной строке cmd, набрав 'set', вы можете увидеть все env. переменные. Переменные каденции пользовательского пути и другие не были включены. Я сохранил исходный текст полного пути, затем я прошел и обрезал конкретные (системные) элементы пути, которые считались ненужными. после этого в новом сеансе cmd ввод "set" теперь показывает элементы пользовательского пути, прикрепленные к концам элементов пути системы, потому что они теперь подходят.
Ответ 3
В Windows 7 также убедитесь, что системный путь не заканчивается обратным слэшем. Если это так, USER PATH добавляется к системному пути, как обычно, но после разрыва строки, что ломает ситуацию. В последнем случае простая команда "path" и "echo% PATH%" будет печатать два разных выхода.