Почему 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`


Она не изменилась. Почему?

664   1  

1 ответ:

В Windows каждый процесс получает копию среды, которая по сути является моментальным снимком глобальной среды на момент запуска процесса. Изменения в глобальной среде во время выполнения процесса не распространяются обратно на собственную копию среды процесса.

Чтобы ответить на фактический вопрос, setx изменяет пользовательскую среду (или системную, если выполняется с /M), но изменения не сразу видны в процессе, который выполняется setx, в данном случае cmd.exe. Если вы откроете новую командную строку после запуска setx, вы увидите изменения в, что экземпляр cmd.exe.

Это явно отмечено в справке setx /?:

В локальной системе переменные, созданные или измененные этим инструментом, будут доступны в будущих окнах команд, но не в текущем CMD.окно командной строки exe.

Производить одни и те же изменения в как глобальной окружающей среде, так и в текущий процесс, вам нужно запустить оба setx и set.

Comments

    Ничего не найдено.