В чем разница между SETX и SET в переменных среды в Windows


в чем разница между SETX и SET?

в моем понимании:


Оба используются для установки переменных окружения

SETX для пользовательских переменных.

SET для переменных оболочки.

28
задан Martin Prikryl
02.04.2023 5:21 Количество просмотров материала 2739
Распечатать страницу

3 ответа

Я боюсь, что это не так просто. Переменные среды не ограничены областью видимости, как вы предполагаете, но вы правы, что время жизни значения в переменной отличается при сравнении глаголов.

Set изменяет текущие значения среды оболочки (окна), и изменение доступно немедленно, но временно. Изменение не повлияет на другие запущенные оболочки, и как только вы закроете оболочку, новое значение будет потеряно до этого время, как вы запустите установить снова.

setx постоянно изменяет значение, которое влияет на все будущие оболочки, но не изменяет среду уже запущенных оболочек. Необходимо выйти из оболочки и снова открыть ее, прежде чем изменение станет доступным, но значение будет оставаться измененным, пока вы не измените его снова.

см. здесь для примера: http://batcheero.blogspot.com/2008/02/set-and-setx.html

70
отвечен Frank Thomas 2023-04-03 13:09

фактически мы можем установить переменную в трех областях:

1. Shell

2. Пользователь

3. System (Machine) или Global

SET: создает или обновляет текущую область оболочки для temporary.

C:\Users7246>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:\Users7246>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 пользователя и переменные окружения.

enter image description here

7
отвечен Premraj 2023-04-03 15:26

добавление пункта, который был пропущен другими ответчиками.

чтобы установить системную переменную среды, а не переменную среды пользователя, нам просто нужно использовать параметр /m в команде setx и запустить его из командной строки с повышенными привилегиями(администратор).

setx variable value /m

пример: Откройте Командную строку от имени администратора и выполните команду

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

объяснение: Вышеприведенная команда будет добавлена "C:\Users\User\Libs" к уже существующей переменной Path (системная среда Переменная.)

без / m аргумент, он будет вносить изменения или создавать только переменную пути на уровне пользователя.

из руководства пользователя setx,

/ M определяет что переменная должна быть установлена внутри система шириной (параметру) окружающая среда. По умолчанию устанавливается переменная под HKEY_CURRENT_USER окружающая среда.

1
отвечен Renju Jose 2023-04-03 17:43

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх