Вопрос или проблема
В оболочке 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
-
Перезапуск командной строки:
Самый простой способ – просто закрыть и заново открыть командное окно. При запуске новой сессии будут загружены актуальные значения переменных окружения. -
Команда
SET
:
Вы можете использовать командуSET
для перезаписи локальных переменных окружения непосредственно в текущем сеансе. Пример:SET PATH=%PATH%;C:\Folder
Этот метод изменит переменную
PATH
только для текущего окна командной строки и будет действовать до его закрытия. -
Создание BAT-файла:
Если вы часто меняете переменные окружения, вы можете создать .BAT файл. Например:@ECHO OFF SET NEWVAR=value SET PATH=%PATH%;C:\NewFolder
Запустив этот файл, вы установите новые значения переменных в текущем сеансе.
-
Использование команд
SETX
:
Чтобы установить переменные окружения на уровне системы, можно воспользоваться командойSETX
. Она позволяет вам устанавливать переменные, которые будут доступны в новых окнах командной строки и других приложениях, но для применения изменений необходимо будет открыть новое окно терминала:SETX MYVAR "my_value"
Важно отметить, что
SETX
не обновляет переменные окружения для уже открытых окон командной строки. -
Создание скриптов для обновления переменных:
Вы можете создать скрипт, который будет как локально устанавливать переменные, так и глобально. Например:@ECHO OFF SET MYVAR=value SETX MYVAR value /M
Сохранив этот код в файл, вы сможете убрать беспорядок, когда вам понадобится обновить переменные в одном месте.
-
Использование команды
CALL
:
Если у вас есть несколько .BAT файлов с переменными, вы можете вызывать их с помощью командыCALL
:CALL myvars.bat
Это позволит вам использовать переменные, определенные в другом BAT-файле, в текущем сеансе.
Заключение
Хотя в Windows и нет прямого аналога команды source
для обновления переменных окружения в уже открытых сеансах, многочисленные методы, такие как использование команд SET
, SETX
, а также создание BAT-файлов, предоставляют гибкие и мощные средства для управления параметрами окружения. Это может существенно упростить вашу работу, особенно если вы активно разрабатываете и тестируете приложения или конфигурации, зависимые от переменных окружения.