Что такое вообще переменная среды?
Когда операционная система запускает какую-нибудь программу, она стартует новый процесс и каким-то образом передаёт ему информацию о настройках среды, или окружения (в английском языке используется термин 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
.
Как изменять значения переменных среды?
Инструкция для разных версий операционной системы Windows
Пользователям других операционных систем предлагаю погуглить :)
Переменную поменял, но эффекта нет. Почему?
Когда вы меняете значение некоторой переменной среды, об этом узнаёт только операционная система. При запуске новых программ она сообщит им новые значения переменных. Но ранее запущенные программы будут продолжать использовать те значения переменных среды, которые были актуальны на момент запуска программы.
Поэтому после изменения переменных среды придётся перезапустить те программы, которым необходимо сообщить новые значения переменных.