Почему setx path не работает?
Может ли кто-нибудь объяснить этот результат?
После установки пути он не изменился. Это было выполнено в командной строке администратора:
C:Windowssystem32>setx path "C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:ProgramDatachocolateybin;D:Program Files (x86)Microsoft VS Codebin"
SUCCESS: Specified value was saved.
C:Windowssystem32>path
PATH=C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:ProgramDatachocolateybin;D:Program Files (x86)Microsoft VS Codebin;D:Program Files (x86)metapad36;D:Program Files (x86)metapad36" /M
Я читал, что %PATH% = переменная PATH для машины + переменная PATH для пользователя. Вижу ли я путь машины + путь администратора?
Посмотрели другие статьи на эту тему, но все равно запутались.
Должен ли я очистить пути пользователей, чтобы не было дублирования?
Update : Re подсказка, что " переменные, созданные или модифицированный этим инструментом будет доступен в будущих командных окнах" я открываю окно non-admin и вводю:
>path
PATH=C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:ProgramDatachocolateybin;D:Program Files (x86)Microsoft VS Codebin;;D:Program Files (x86)metapad36;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:ProgramDatachocolateybin;D:Program Files (x86)Microsoft VS Codebin
Путь повторяется дважды. Ок, тогда при той же подсказке I setx Путь без повтора, и без /M:
>setx path "C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:ProgramDatachocolateybin;D:Program Files (x86)Microsoft VS Codebin"
SUCCESS: Specified value was saved.
Очевидно, сохранено в текущей пользовательской среде.
Затем я открываю a новый командное окно non-admin и:
>path
PATH=C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:ProgramDatachocolateybin;D:Program Files (x86)Microsoft VS Codebin;;D:Program Files (x86)metapad36;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:ProgramDatachocolateybin;D:Program Files (x86)Microsoft VS Codebin`
Она не изменилась. Почему?
1 ответ:
В Windows каждый процесс получает копию среды, которая по сути является моментальным снимком глобальной среды на момент запуска процесса. Изменения в глобальной среде во время выполнения процесса не распространяются обратно на собственную копию среды процесса.
Чтобы ответить на фактический вопрос,
setxизменяет пользовательскую среду (или системную, если выполняется с/M), но изменения не сразу видны в процессе, который выполняетсяsetx, в данном случаеcmd.exe. Если вы откроете новую командную строку после запускаsetx, вы увидите изменения в, что экземплярcmd.exe.Это явно отмечено в справке
setx /?:В локальной системе переменные, созданные или измененные этим инструментом, будут доступны в будущих окнах команд, но не в текущем CMD.окно командной строки exe.
Производить одни и те же изменения в как глобальной окружающей среде, так и в текущий процесс, вам нужно запустить оба
setxиset.
Comments