Как перезагрузить переменные окружения в командной строке Windows?

Вопрос или проблема

В оболочке bash вы можете редактировать переменные окружения, запустить source ./.bashrc и обновить значения переменных окружения в уже открытой оболочке. Есть ли в Windows аналогичная команда, которую можно выполнить из командной строки?

(например, я могу изменить свою системную переменную %PATH% в свойствах Компьютера, а затем захотеть, чтобы уже открытое окно cmd.exe обновило переменные окружения оттуда).

SET variable=string

Переменная — это новая переменная, которую вы хотите создать (или существующая)

Строка — это то, что вы хотите назначить переменной

Пример хранения текстовой строки:

C:> SET _dept=Продажи и Маркетинг

Источник: http://ss64.com/nt/set.html

ПРИМЕЧАНИЕ: Изменения, внесенные с помощью SET, сохранятся только для сессии CMD.

В окне DOS вы можете сохранить все свои переменные окружения в пакетный файл и выполнить его, чтобы изменить переменные на время этой сессии:

C:\temp> set >newenv.bat

Вернитесь в окна и откройте файл newenv.bat в вашем любимом редакторе и удалите все переменные, кроме тех, которые вы хотите сбросить. Для оставшихся добавьте слово ‘set’ в начале строки и перепишите все после ‘=’ новыми значениями.

Теперь вернитесь в окно DOS и выполните пакетный файл:

C:\temp> newenv

…и вы увидите, как каждая строка сбрасывает переменные на новые значения. Если вы не хотите видеть строки сброса, добавьте ‘echo off’ в верхней части .bat файла.

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

Вы также можете добавлять значения в начало или конец текущих значений, используя %VARIABLE% в вашей команде set. Например, чтобы добавить еще одну директорию поиска в path, вы можете сказать:
set PATH=%PATH%;c:\bin
и это добавит его в конец, оставив текущие значения нетронутыми.

Существует много других действий, которые вы можете выполнять с переменными окружения с помощью команды set, включая стандартные %VAR% переменные, предоставленные cmd и т. д…
Попробуйте ввести ‘help set’ в командной строке для получения множества информации по этим вопросам. Основная идея заключается в том, чтобы сохранить изменения в bat-файл и запустить его, чтобы избежать повторного ввода изменений снова и снова…

Я не знаю, как изменить переменную окружения в графическом интерфейсе системы, а затем “узнать” ее в уже открытом окне командной строки.

Тем не менее, я больше не использую графический интерфейс, потому что могу устанавливать как глобальные, так и локальные переменные окружения из командной строки. Графический интерфейс более не нужен. Если у вас есть способ всегда избегать использования графического интерфейса, возможно, ваша проблема станет более управляемой?

Недостаток в том, что существует одна команда для установки глобальной переменной окружения и другая для локального командного окна. Я не знаю, как подключить их обе в одной команде. Вместо этого у меня есть .BAT файл, который принимает название переменной и значение в качестве аргументов и устанавливает глобальную и локальную переменные окружения одновременно. Следующее оконное приложение или GUI увидит новое значение. Однако, я не думаю, что запуск GUI приложений или других открытых командных окон это сделает.

C:>SET_ENVVARS.BAT MYVAR MYVAL
SET %1=%2
CALL SETX %1 %2 /M

У вас есть все ограничения командной строки, такие как символы экранирования и кавычки, но большинство времени это работает довольно хорошо.

Мой .BAT файл имеет несколько дополнительных функций, но в своей основе — это и есть.

Я очень редко должен использовать графический интерфейс.

Я также изредка “сбрасываю” свои переменные окружения с помощью:

C:\>SET >MYVARS.TXT

Немного доработав, вы сможете получить данные из этого.

Это не быстрое решение, но я трачу много времени на свою инфраструктуру .BAT файлов и нахожу, что в долгосрочной перспективе экономлю больше времени, переформулируя свою проблему так, чтобы она соответствовала тому, как лучше всего работают Windows .BAT файлы. Кроме того, иногда я прибегаю к C, например, чтобы вывести все элементы PATH, но каждый на отдельной строке.

Создайте пакетную программу, которая устанавливает все переменные, которые вы хотите установить
Из другого пакетного файла вы можете вызвать переменные с помощью call

В пакетном файле
call myvars.bat

ваш другой код

Вы также можете вызвать файл из командной строки

Ответ или решение

Вопрос: Как обновить переменные окружения в командной строке Windows?

В командной строке Windows, в отличие от bash, нет прямого аналога команды source, позволяющей обновить переменные окружения в уже открытом сеансе. Однако существует несколько совместимых методов, которые помогут вам "перезагрузить" значения переменных окружения, если они были изменены в графическом интерфейсе или через другие средства. В данном ответе мы рассмотрим несколько подходов для этого.

Способы обновления переменных окружения в Windows

  1. Перезапуск командной строки:
    Самый простой способ – просто закрыть и заново открыть командное окно. При запуске новой сессии будут загружены актуальные значения переменных окружения.

  2. Команда SET:
    Вы можете использовать команду SET для перезаписи локальных переменных окружения непосредственно в текущем сеансе. Пример:

    SET PATH=%PATH%;C:\Folder

    Этот метод изменит переменную PATH только для текущего окна командной строки и будет действовать до его закрытия.

  3. Создание BAT-файла:
    Если вы часто меняете переменные окружения, вы можете создать .BAT файл. Например:

    @ECHO OFF
    SET NEWVAR=value
    SET PATH=%PATH%;C:\NewFolder

    Запустив этот файл, вы установите новые значения переменных в текущем сеансе.

  4. Использование команд SETX:
    Чтобы установить переменные окружения на уровне системы, можно воспользоваться командой SETX. Она позволяет вам устанавливать переменные, которые будут доступны в новых окнах командной строки и других приложениях, но для применения изменений необходимо будет открыть новое окно терминала:

    SETX MYVAR "my_value"

    Важно отметить, что SETX не обновляет переменные окружения для уже открытых окон командной строки.

  5. Создание скриптов для обновления переменных:
    Вы можете создать скрипт, который будет как локально устанавливать переменные, так и глобально. Например:

    @ECHO OFF
    SET MYVAR=value
    SETX MYVAR value /M

    Сохранив этот код в файл, вы сможете убрать беспорядок, когда вам понадобится обновить переменные в одном месте.

  6. Использование команды CALL:
    Если у вас есть несколько .BAT файлов с переменными, вы можете вызывать их с помощью команды CALL:

    CALL myvars.bat

    Это позволит вам использовать переменные, определенные в другом BAT-файле, в текущем сеансе.

Заключение

Хотя в Windows и нет прямого аналога команды source для обновления переменных окружения в уже открытых сеансах, многочисленные методы, такие как использование команд SET, SETX, а также создание BAT-файлов, предоставляют гибкие и мощные средства для управления параметрами окружения. Это может существенно упростить вашу работу, особенно если вы активно разрабатываете и тестируете приложения или конфигурации, зависимые от переменных окружения.

Оцените материал
Добавить комментарий

Капча загружается...