Системная и пользовательская переменная окружения 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%" будет печатать два разных выхода.