Яка різниця між SETX та SET у змінних середовища в Windows


63

У чому різниця між SETXі SET?

Як я розумію:
обидва використовуються для встановлення змінних середовища,
SETXпризначених для змінних користувачів.
SETпризначений для змінних оболонок.


3
Спробуйте SET /?і SETX /?- це має дати вам кілька ідей.
Іссі

2
Також див. Посилання SS64 для SET і SETX . SS64 - це чудова орієнтир команд для декількох мов та середовищ команд - я вважаю, що це особливо зручно для CMD & PowerShell.
Іссі



Відповіді:


83

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

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

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

Дивіться тут приклад: http://batcheero.blogspot.com/2008/02/set-and-setx.html


13
це дуже добре написано, хотілося б додати, що setx змінює реєстр
барлоп

Це насправді навіть менш просто, ніж описано тут. Існують "мінливі" змінні середовища, про які слід пам'ятати. І, за деяких обставин, перелік змінних, показаний командою SET, буде відрізнятися залежно від того, користувач викликав "підвищений" командний рядок чи ні.
kreemoweet

10

Насправді ми можемо встановити змінну у трьох сферах:
1. Оболонка
2. Користувач
3. Система (машина) або глобальна

SET: Створення або оновлення поточної області оболонки на тимчасову.

C:\Users\977246>set /?
Displays, sets, or removes cmd.exe environment variables.

SET [variable=[string]]

  variable  Specifies the environment-variable name.
  string    Specifies a series of characters to assign to the variable.

Type SET without parameters to display the current environment variables.

SETX: Створення або оновлення поточних змінних середовищ користувача для постійних.

C:\Users\977246>setx /?

SetX has three ways of working:

Syntax 1:
    SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]

Syntax 2:
    SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]

Syntax 3:
    SETX [/S system [/U [domain\]user [/P [password]]]]
         /F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]

Description:
    Creates or modifies environment variables in the user or system
    environment. Can set variables based on arguments, regkeys or
    file input.

To remove the variable set value to empty string as follows

Example: setx path ""

У змінних середовищ GUI користувача та системи.

введіть тут опис зображення


3

Додавання балу, який пропустили інші відповіді.

Для встановлення системної змінної середовища, а не змінної середовища користувача, нам просто потрібно використовувати параметр / m в команді setx і запустити її з підвищеного командного рядка (адміністратора).

setx variable value /m

Приклад: Відкрийте командний рядок як адміністратор та запустіть

setx Path "%Path%;C:\Users\User\Libs" /m

Пояснення: вищевказана команда додасть "C: \ Users \ User \ Libs" до вже існуючої змінної шляху (змінна системне середовище).

Без аргументу / m він змінить або створить лише змінну Шлях на рівні користувача.

З посібника користувача setx,

/ M Вказує, що змінну слід встановити в системному середовищі (HKEY_LOCAL_MACHINE). За замовчуванням - встановити змінну в середовищі HKEY_CURRENT_USER.

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