Windows Environment Variables Tutorial
This page is a basic tutorial on Windows’s Environment Variables. The code here is tested on Windows 10.
What’s Environment Variables
Environment variables are system-wide global variables. They are somewhat like config parameters, and is used by processes. For example, apps need to know the path of your Windows kernal, path of your home dir, paths to search for shell programs, etc.
Not Case Sensitive
Windows environment variable names are Not Case Sensitive.
View Environment Variables
In PowerShell, type Get-ChildItem env:
cmd.exe showing environment variables, by set
In Command Prompt (cmd.exe), type set
Windows 10 GUI for environment variable.
Press ❖Window key, then type “environment”
- goto Control Panel\System and Security\System
- Click the 〖Advanced system settings〗 link on the left pane, then 〖Advanced〗 tab, then the 〖Environment Variables…〗 button.
Or type in shell c:\Windows\System32\SystemPropertiesAdvanced.exe to launch the GUI app directly.
The Windows System control panel for editing env vars.
Sample Values of Environment Variable
Here’s example of env var values as it exists on my system.
One of the most important env var is the PATH. Here’s a sample value of path as set in my system (with line break added for easy reading):
Temporary vs Permanent
A environment variable can be Local or System.
- Local environment variable в†’ per session, temporary.
- System environment variable в†’ permanent, stored in Registry.
Process Environment Variable is Temporary
- Local env var can be created using command prompt “cmd.exe” with the “set” command.
- Local env var are also known as “Process env var”. They are per session env vars. They are temporary.
- When you use set xx=5 in “cmd.exe” to create or set a variable, it creates a local env var. When you restart the shell, it’ll be gone.
Only programs that are launched from that particular shell will be aware of the local env var you’ve set.
System Environment Variable = Permanent (in Windows Registry)
- System env var are those stored in Windows Registry. They are permanent.
- System env var can be created by a command line shell or programing language.
System env vars has 2 categories:
The “User” category env vars are things like home dir ( HOME ), temp dir ( TEMP and or TMP ).
In Registry, they are at: HKEY_CURRENT_USER\Environment .
Machine
The “Machine” category env vars are any other, usually related to your machine or more general info.
Example of “Machine” environment variables:
- OS kernal path ( WINDIR )
- processor info ( PROCESSOR_ARCHITECTURE , NUMBER_OF_PROCESSORS , etc)
- application paths ( PATH )
- executable file name extensions ( PATHEXT )
- OS type ( OS )
- current user name ( USERNAME )
In Registry, they are at:
Note that you can set any new env vars in any category. Programs have access to all your env vars, but which ones are meaningful to the program is up to the program.
View or Set Environment Variables using Powershell
Viewing Environment Variable Using cmd.exe
To show a value of a env var, type echo % env_var_name % . For example, to show the “path” env var, do:
To see all your env vars, type:
To see all env vars starting with “p”, type:
Set Environment Variable for Current Session Using cmd.exe
To set env var for the current session, use set var_name = value . WARNING: make sure there’s no space around the equal sign. Example:
Set Environment Variable Permanently in Registry
To set env var permanently, use “setx” command. The “setx” command is part of “cmd.exe” in Windows Vista. Here’s a example:
For detail, type setx /? .
Note: when you set a env var using “setx”, it is set in the registry, however, they are not known in the current session. Restart the “cmd.exe” if you want them to be available.
If you have a question, put $5 at patreon and message me.
Что такое переменные среды Windows
Операционные системы и Windows не исключение имеют в своем составе особый механизм хранения различной информации, называемый переменными. Кто знаком с программированием прекрасно понимает, что это. Остальные могут представить себе это в виде записи имя_переменной=значение переменной среды. Например, запись username=Vasya означает, что переменная с именем username содержит значение Vasya.
При этом подразумевается, что имя переменной неизменно, а значение может изменяться с течением времени. Представим себе, что в переменной username хранится имя текущего пользователя Windows. Когда мы вошли в систему под именем Vasya, то в username оказалось соответствующее значение, однако если мы сменим пользователя на Ivan, то и значение изменится и username будет равно Ivan. Из-за этой возможности изменяться их и называют переменными.
Они оказываются чрезвычайно полезными при создании скриптов, работе в командной строке и адресной строке Проводника. В основном они содержат информацию из разряда имя компьютера, имя пользователя, домашняя папка пользователя, каталог куда установлена ОС, архитектура процессора, папки для временных файлов и так далее.
Таким образом эта информация дает представление о текущем окружении, то есть описывает среду, в которой происходит выполнение программы, отсюда и получили свое название переменные среды (environment variables) или по-другому переменные окружения.
В чем их практический смысл? Представьте себе, что вы создаете командный файл, в котором используется путь к домашней папке пользователя, причем он должен работать на любом компьютере. Как его прописать, если имя учетной записи заранее не известно, да и расположение папки тоже? Конечно, его можно выяснить в недрах ОС, но гораздо проще и компактней просто написать %USERPROFILE%. Система сама заботится о правильном значении, поэтому в таком варианте скрипт будет корректно работать везде.
Вот другой пример. Если в адресную строку Проводника ввести %localappdata% и нажать Enter , то произойдет переход в папку, которую установленные программы используют для хранения своих локальных данных. Обычно это C:\Users\имя текущей учетной записи\AppData\Local в которую можно конечно перейти обычным способом, но учитывая, что AppData является скрытой, то данный способ может оказаться быстрее и проще. К тому же можно создавать собственные переменные среды на нужные папки.
Так же благодаря переменной path можно запускать программы без указания полных путей к исполняем файлам, что заметно упрощает использование компьютера.
Переменные среды Windows бывают нескольких видов:
- Системные переменные — работают в пределах всего компьютера, хранятся в реестре в разделе HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
- Пользовательские переменные — действуют только для конкретной учетной записи и находятся в реестре по адресу HKCU\Environment
- Сессионные переменные — существуют только в пределах текущего сеанса окна командной строки.
Настройка переменных среды Windows
В операционной системе имеется заранее предопределенный набор переменных окружения Windows и можно создавать собственные. Для просмотра и управления ими можно воспользоваться графическим интерфейсом. В разных версиях Windows вид окон немного отличается, но принципиально все одинаково. Правда в Windows 10 управление реализовано более удобно, чем в 7 и более старых версиях.
Настройка переменных среды Windows в графическом интерфейсе
Чтобы иметь возможность просматривать и редактировать переменные окружения в Windows 10 нужно выполнить следующие действия.
Щелкнуть правой кнопкой мыши по иконке «Этот компьютер» на рабочем столе и выбрать в меню «Свойства» или набрать в поиске на панели задач «Панель управления». Затем в левом столбце нажать на «Дополнительные параметры системы». В новом окне на вкладке «Дополнительно» есть кнопка «Переменные среды». Альтернативный вариант нажать комбинацию клавиш WIN + R и ввести systempropertiesadvanced .
Окно управления состоит из двух частей. В верхней представлены пользовательские переменные, а в нижней системные. Здесь можно просмотреть существующие, а также отредактировать, удалить или создать новые воспользовавшись соответствующими кнопками.
Чтобы создать переменную окружения нажимаем кнопку «Создать» в нужной части окна и вводим ее имя, значение и затем OK. Можно воспользоваться кнопкой «Обзор каталога» чтобы не вводить путь до нужной папки вручную.
Настройка переменных окружения Windows в командной строке
Конечно, есть альтернативный вариант настройки переменных окружения с помощью командной строки Windows. Чтобы cmd правильно понял, о чем идет речь ее нужно обернуть в символы процента вот так, %имя_переменной%. Соответственно, чтобы вывести на экран значение переменной среды команда будет такой: echo %имя_переменной% .
В Windows есть специальные команды, предназначенные для создания и редактирования переменных. Это set и setx принципиальная разница между которыми в том, что первая управляет ими только в текущем окне командной строки, а вторая изменяет их «навсегда» поскольку изменения сохраняются в реестре.
Для просмотра всех существующих переменных и их значений введите set без параметров.
Тут есть важный момент, который нужно понять, переменные среды считываются в момент запуска программы. Поэтому изменения, сделанные в графическом интерфейсе или командой setx не действуют на уже запущенные программы. Их придется закрыть и запустить снова. В то же время команда set влияет только на текущее окно или дочерние процессы.
Чтобы создать пользовательскую переменную среды или отредактировать существующую общий вид команды следующий setx имя значение , использовать кавычки при наличии пробелов. Если переменной с таким именем не существует, то она будет создана, в противном случае значение будет изменено на новое. Для управления системными переменными нужно дополнить команду ключом /m и командная строка должна быть запущена с правами администратора компьютера setx mypc T-800 /m .
Впрочем, у setx имеется недостаток, с ее помощью нельзя удалить существующую переменную, максимум можно присвоить ей пустое значение setx mypc «» . Хотя при этом она как бы не существует для cmd, но фактически она продолжает оставаться в реестре. Полноценное удаление возможно непосредственно в реестре или с помощью команд, обеспечивающих работу с ним, а также в графическом интерфейсе.
Для работы с сеансовыми переменными используется команда set. Синтаксис несколько отличается set имя=значение . Здесь уже используется знак равенства вместо пробела, при этом не допускается его наличие в имени. Таким образом изменить переменную окружения с именем temp в текущем окне CMD можно командой: set temp=D:\Archive\Garbage .
Использование переменных среды Windows сильно упрощает и ускоряет использование компьютера опытными пользователями. Каким способом их использовать каждый решает самостоятельно.
Как изменить переменные среды в Windows 7
Переменная среды (окружения) в Виндовс хранит информацию о настройках ОС и пользовательских данных. Обозначается она с помощью парного символа «%», например:
С помощью этих переменных можно передавать необходимую информацию операционной системе. Например, %PATH% хранит список директорий, в которых Виндовс ищет исполняемые файлы, если путь к ним не задан явно. %TEMP% хранит временные файлы, а %APPDATA% — настройки программ пользователя.
Зачем редактировать переменные
Изменение переменных среды может помочь, если вы хотите перенести папку «Temp» или «AppData» в другое место. Редактирование %PATH% даст возможность запускать программы из «Командной строки», не указывая каждый раз длинный путь к файлу. Давайте рассмотрим методы, которые помогут в достижении этих целей.
Способ 1: Свойства «Компьютера»
В качестве примера программы, которую необходимо запустить, используем Skype. Попытавшись активировать это приложение из «Командной строки», вы получите такую ошибку:
Это происходит потому, что вы не задали полный путь к исполняемому файлу. В нашем случае полный путь выглядит вот так:
«C:\Program Files (x86)\Skype\Phone\Skype.exe»
Чтобы это не повторять каждый раз, давайте добавим директорию Скайпа в переменную %PATH%.
- В меню «Пуск» нажмите правой кнопкой мыши на «Компьютер» и выберите «Свойства».
Затем перейдите на «Дополнительные параметры системы».
На вкладке «Дополнительно» нажмите на «Переменные среды».
Откроется окно с различными переменными. Выберите «Path» и нажмите «Изменить».
Теперь необходимо дописать путь к нашей директории.
Путь нужно указывать не к самому файлу, а к папке, в которой он находится. Обратите внимание, что разделителем между директориями является «;».
C:\Program Files (x86)\Skype\Phone
Если есть необходимость, таким же образом вносим изменения в другие переменные и жмем «ОК».
Завершаем сеанс пользователя, чтобы изменения сохранились в системе. Снова заходим в «Командную строку» и пытаемся запустить Скайп, введя
Готово! Теперь вы можете запускать любую программу, а не только Skype, находясь в любой директории в «Командной строке».
Способ 2: «Командная строка»
Рассмотрим случай, когда мы хотим установить %APPDATA% на диск «D». Эта переменная отсутствует в «Переменных среды», поэтому ее невозможно изменить первым способом.
- Чтобы узнать текущее значение переменной, в «Командной строке» введите:
В нашем случае эта папка находится по адресу:
Для того чтобы изменить ее значение, введите:
Внимание! Убедитесь, что точно знаете зачем вы это делаете, поскольку необдуманные действия могут привести к неработоспособности Виндовс.
Значение успешно изменено.
Изменение значений переменных среды требует определенных знаний в этой сфере. Не играйтесь со значениями и не редактируйте их наугад, чтобы не навредить ОС. Хорошо изучите теоретический материал, и только после этого переходите к практике.