Зачем нужны переменные окружения
Перейти к содержимому

Зачем нужны переменные окружения

Что такое переменные среды Windows

environment variables 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 .

доступ к настройкам переменных среды в Windows 10

Окно управления состоит из двух частей. В верхней представлены пользовательские переменные, а в нижней системные. Здесь можно просмотреть существующие, а также отредактировать, удалить или создать новые воспользовавшись соответствующими кнопками.

окно настроек переменных среды Windows 10

Чтобы создать переменную окружения нажимаем кнопку «Создать» в нужной части окна и вводим ее имя, значение и затем OK. Можно воспользоваться кнопкой «Обзор каталога» чтобы не вводить путь до нужной папки вручную.

Настройка переменных окружения Windows в командной строке

Конечно, есть альтернативный вариант настройки переменных окружения с помощью командной строки Windows. Чтобы cmd правильно понял, о чем идет речь ее нужно обернуть в символы процента вот так, %имя_переменной%. Соответственно, чтобы вывести на экран значение переменной среды команда будет такой: echo %имя_переменной% .

В Windows есть специальные команды, предназначенные для создания и редактирования переменных. Это set и setx принципиальная разница между которыми в том, что первая управляет ими только в текущем окне командной строки, а вторая изменяет их «навсегда» поскольку изменения сохраняются в реестре.

Для просмотра всех существующих переменных и их значений введите set без параметров.

вывод команды set

Тут есть важный момент, который нужно понять, переменные среды считываются в момент запуска программы. Поэтому изменения, сделанные в графическом интерфейсе или командой setx не действуют на уже запущенные программы. Их придется закрыть и запустить снова. В то же время команда set влияет только на текущее окно или дочерние процессы.

Чтобы создать пользовательскую переменную среды или отредактировать существующую общий вид команды следующий setx имя значение , использовать кавычки при наличии пробелов. Если переменной с таким именем не существует, то она будет создана, в противном случае значение будет изменено на новое. Для управления системными переменными нужно дополнить команду ключом /m и командная строка должна быть запущена с правами администратора компьютера setx mypc T-800 /m .

создание переменной среды windows в командной строке

Впрочем, у setx имеется недостаток, с ее помощью нельзя удалить существующую переменную, максимум можно присвоить ей пустое значение setx mypc «» . Хотя при этом она как бы не существует для cmd, но фактически она продолжает оставаться в реестре. Полноценное удаление возможно непосредственно в реестре или с помощью команд, обеспечивающих работу с ним, а также в графическом интерфейсе.

Для работы с сеансовыми переменными используется команда set. Синтаксис несколько отличается set имя=значение . Здесь уже используется знак равенства вместо пробела, при этом не допускается его наличие в имени. Таким образом изменить переменную окружения с именем temp в текущем окне CMD можно командой: set temp=D:\Archive\Garbage .

Изменение пользовательской переменной окружения и просмотр нового значения

Использование переменных среды Windows сильно упрощает и ускоряет использование компьютера опытными пользователями. Каким способом их использовать каждый решает самостоятельно.

Environment variables (Русский)

Переменные окружения — именованные переменные, содержащие текстовую информацию, которую могут использовать запускаемые программы. Такие переменные могут содержать общие настройки системы, параметры графической или командной оболочки, данные о предпочтениях пользователя и многое другое. Значением такой переменной может быть, например, место размещения исполняемых файлов в системе, имя предпочитаемого текстового редактора или настройки системной локали. Новые в Linux пользователи часто находят такой способ хранения настроек неудобным. Однако, переменные окружения позволяют простым и надежным способом передавать настройки сразу для множества приложений.

Contents

Утилиты

Пакет coreutils содержит программы printenv и env. Программа printenv позволяет отобразить список текущих переменных окружения:

Программа env может быть использована для запуска команд с указанием нового значения переменной окружения. В следующем примере будет запущен xterm, для которого переменная окружения EDITOR имеет значение vim . Такой вызов не затронет переменную окружения EDITOR в текущем сеансе терминала.

Встроенная в Bash команда set позволяет вам устанавливать значения переменных окружения в текущем сеансе терминала, а также отображать имена и значения переменных окружения текущего сеанса. Для получения дополнительной информации смотрите документацию по команде set.

Чтобы увидеть переменные окружения конкретных процессов, откройте файл /proc/pid/environ , где pid — числовой идентификатор интересующего процесса. Записи в этом файле отделены друг от друга нулевым байтом ( \x0 ), который обычно не виден в терминале. Вы можете использовать, например, sed для отображения переменных окружения процесса в более читабельном формате, заменив нулевые байты на переносы строки: sed ‘s:\x0:\n:g’ /proc/$PID/environ

Установка переменных

На системном уровне

Большинство дистрибутивов Linux советуют изменять или добавлять переменные окружения в /etc/profile или других местах. Имейте в виду, что сразу множество файлов могут содержать переменные окружения и переопределять их, вроде /etc/locale.conf . По сути, любой скрипт может быть использован для этого, однако, по принятым в UNIX соглашениям, следует использовать для этого только определенные файлы.

Для установки переменных окружения на уровне всей системы можно использовать следующие файлы (каждый со своими ограничениями):

  • /etc/environment используется модулем pam_env. Он не привязан к командным оболочкам, поэтому скрипты или glob-выражения использовать здесь нельзя. Здесь можно указывать только пары имя=значение .
  • /etc/profile устанавливает переменные только при логине в командные оболочки. Он может запускать любые скрипты в оболочках, совместимых с Bourne shell.
  • Файлы настроек, специфичные для конкретных командных оболочек — глобальные файлы для вашей командной оболочки, инициализирует переменные и запускает скрипты. Например, Bash (Русский)#Файлы настроек или Zsh (Русский)#Файлы Запуска/Завершения.

Ниже приведён пример скрипта, который позволяет добавлять каталог

/bin пользователя в PATH . Чтобы это сделать, просто поместите код в один из системных файлов инициализации окружения ( /etc/profile или /etc/bash.bashrc ):

На уровне пользователя

Не всегда требуется устанавливать переменные окружения на уровне системы. Например, вы можете добавить ваш каталог /home/пользователь/bin в PATH , однако не хотите, чтобы это затрагивало других пользователей системы. Переменные окружения пользователя можно устанавливать во многих других файлах:

Например, чтобы добавить каталог в PATH , поместите следующее в

Для применения изменений перезайдите в командную оболочку или используйте команду source: $ source

    Демон dbus и пользовательский экземпляр systemd не наследуют никакие переменные окружения из мест вроде
Графические приложения

Если переменная окружения влияет только на графические приложения, можно ограничить область её применения, установив её только в рамках графического сеанса.

Чтобы установить переменные окружения только для определённого приложения вместо целого сеанса, измените .desktop файл этого приложения. Смотрите Ярлыки приложений#Изменение переменных среды.

Использование скрипта запуска

Некоторые графические окружения (например, KDE Plasma), поддерживают запуск скриптов при входе: можно использовать их для установки переменных окружения. Пример есть в статье KDE (Русский)#Автозапуск приложений.

Окружение Xorg

Установка переменных окружения для сеанса Xorg зависит от того, каким конкретно способом он запускается:

    Большинство экранных менеджеров выполняют source файла xprofile. и SLiM выполняют xinitrc. выполняет

Хотя конец скрипта зависит от того, какой это файл, а любой расширенный синтаксис зависит от используемой оболочки, базовое использование универсально:

Окружение Wayland

Так как Wayland не использует Xorg-специфичные файлы, GDM и KDE Plasma вместо них загружают пользовательские переменные окружения systemd.

Другие экранные менеджеры (например, SDDM) пока что не поддерживают это.

На уровне сеанса

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

В таком случае можно определить переменную PATH в текущем сеансе с помощью команды export. Пока командная оболочка продолжает работать, все запускаемые в ней процессы будут использовать изменённое значение переменной.

С помощью pam_env

PAM-модуль pam_env(8) загружает переменные для прописывания в окружение из этих файлов в указанном порядке: /etc/security/pam_env.conf , /etc/environment (и устаревший

/etc/environment должен содержать только простые пары вида ПЕРЕМЕННАЯ=значение на отдельных строках, наприммер:

/.pam_environment имеют одинаковый формат:

@ и @ являются специальными переменными, значение которых берётся из /etc/passwd . Следующий пример показывает, как использовать переменную HOME внутри другой переменной:

Формат также позволяет расширить уже определённые переменные значениями из других переменных с помощью $<ПЕРЕМЕННАЯ> , например:

Пары ПЕРЕМЕННАЯ=значение тоже допускаются, но расширение переменных здесь не поддерживается. Подробнее смотрите pam_env.conf(5) .

Примеры

В этом разделе описываются типовые переменные окружения, используемые в Linux.

. что такое переменная среды PATH?

Когда операционная система запускает какую-нибудь программу, она стартует новый процесс и каким-то образом передаёт ему информацию о настройках среды, или окружения (в английском языке используется термин environment). Эта информация состоит из набора переменных, содержащих некоторые значения. Процесс может получить эти значения, обратившись к нужной переменной по имени. Например, чтобы узнать, где находится директория, которую операционная система рекомендует использовать для хранения временных файлов, необходимо получить значение переменной среды TEMP .

Как посмотреть значения переменных среды?

В консоли Windows можно посмотреть значение этой переменной, выполнив команду echo %TEMP% , в консоли PowerShell необходимо для этого выполнить команду echo $Env:TEMP , а в консоли Linux или MacOS – команду echo $TEMP .

Если вы пишете программу на языке программирования Python, значение этой переменной можно получить так:

В языке Java это можно сделать следующим образом:

В языке C# аналогичное действие выглядит следующим образом:

На что влияет переменная среды PATH ?

При помощи переменных среды можно передавать информацию не только запускаемым процессам, но и самой операционной системе. Она тоже читает и использует значения переменных среды, поэтому можно управлять некоторыми аспектами поведения операционной системы, изменяя эти переменные.

Переменная PATH содержит список директорий, в которых операционная система пытается искать исполняемые файлы, если пользователь при запуске не указал явно путь к нужному исполняемому файлу.

Давайте представим себе, что на компьютере с операционной системой Windows установлено две разных версии интерпретатора языка программирования Python. Это можно сделать, если установить их в разные директории, например, C:\Python27 и C:\Python34 . Исполняемый файл для обоих версий называется python.exe .

Для того, чтобы запустить исполняемый файл нужной версии, можно указать полный путь к нему, например, C:\Python34\python.exe :

Но каждый раз указывать полный путь лень, да ещё и помнить его надо.

Альтернатива – добавить в переменную среды PATH путь к директории, где находится этот исполняемый файл, и тогда его можно будет запускать, указывая только имя. А чтобы узнать, где он (по мнению операционной системы) находится, можно использовать команду where в операционной системе Windows либо команду which в операционной системе Linux или MacOS.

Переменная PATH содержит список директорий, в которых операционная система должна искать исполняемые файлы. В качестве разделителя используется точка с запятой (;) в операционной системе Windows и двоеточие (:) в операционных системах Linux и MacOS.

Обратите внимание, что в переменную PATH нужно добавлять не пути к исполняемым файлам, а пути к директориям, где они находятся!

Переменная PATH и программы-утилиты

Не обязательно добавлять в переменную PATH пути ко всем директориям, в которых находятся исполняемые файлы на вашем компьютере. Скорее всего большинство программ вы запускаете “через меню старт”. На этот способ запуска переменная PATH никакого влияния не оказывает. Её важно настроить так, чтобы можно было быстро и удобно запускать программы из консоли.

Например, в эту переменную обычно включается путь к “стандартным” местам, где расположены различные программы-утилиты. В операционной системе Windows это директория C:\Windows\system32 , в операционных системах Linux и MacOS директория /usr/bin .

Именно благодаря этому мы можем, например, в консоли Windows использовать утилиту find для поиска файлов или утилиту telnet для установления удалённого соединения по одноимённому протоколу, просто указывая их имя, а не полный путь c:\Windows\system32\telnet.exe .

Когда у вас появляется новая программа-утилита, возникает вопрос – куда её поместить? С одной стороны, её можно положить в C:\Windows\system32 или /usr/bin . Но если вы не любите “засорять” стандартные директории, тогда сделайте какую-нибудь специальную директорию, складывайте все такие программы в неё, и добавьте путь к этой директории в переменную среды PATH .

Как изменять значения переменных среды?

Пользователям других операционных систем предлагаю погуглить 🙂

Переменную поменял, но эффекта нет. Почему?

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

Поэтому после изменения переменных среды придётся перезапустить те программы, которым необходимо сообщить новые значения переменных.

Алексей Баранцев

Автор: Алексей Баранцев

Если вам понравилась эта статья, вы можете поделиться ею в социальных сетях (кнопочки ниже), а потом вернуться на главную страницу блога и почитать другие мои статьи.
Ну а если вы не согласны с чем-то или хотите что-нибудь дополнить – оставьте комментарий ниже, может быть это послужит поводом для написания новой интересной статьи.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *