Контакты

Настройка системной переменной PATH. Команда SET - работа с переменными среды Windows Где находится переменная path

Те, кто хоть раз пользовался утилитами командной строки, знают, что намного удобней набирать команду сразу, не используя при этом путь к этой утилите, и даже не переходя в нужный каталог, поэтому сегодня поговорим о системной переменной path в Windows , узнаем, для чего она нужна, и как ее можно изменить.

Сегодня мы не будем разговаривать о том, что такое командная строка и какие стандартные утилиты командной строки есть в Windows, так как об этом мы уже разговаривали в материале Основы командной строки Windows .

Для чего нужна системная переменная path

Системная переменная path нужна нам для того, чтобы мы могли добавлять свои утилиты в командную строку CMD.exe, а если говорить конкретней, то добавлять каталоги, т.е. пути к этим каталогам для того, что ОС могла определить по названию утилиты, где она расположена, и запустить ее.

Если говорить на примере, то допустим, Вы открываете командную строку, набираете команду ipconfig (служит для конфигурирования сетевых интерфейсов ) и в момент запуска командная строка не знает, где располагается данная утилита, поэтому она начинает ее искать. Сначала в текущем каталоге, затем в системных каталогах, которые как раз, и указаны в системной переменной path. Другими словами, если Вы написали свою консольную программу и хотите ее запустить так же, как ipconfig, то у Вас это не получиться, так как ОС не знает, где же лежит сама программа. Поэтому нам нужно переходить в каталог с программой или писать полный путь к исполняемому файлу, для того чтобы запустить свою утилиту. Поэтому, если Вы часто пользуетесь какой-нибудь консольной программой, которой нет, в стандартной сборке Windows и не хотите копировать ее в системные каталоги, то лучше всего будет создать свой каталог и добавить его в системную переменную path.

Пример

Допустим, мы написали консольную программу, для примера у нас это будет простой bat файл со следующей простой командой:

Echo Привет! Pause

Примечание! Если Вы хотите, чтобы в командной строке выводилась кириллица, то сохраните бат файл с кодировкой OEM 866, это можно сделать с помощью текстового редактора Notepad++ .

Сохраним с названием privet.bat на диске C в каталоге test.

Теперь мы запускаем командную строку (ОС Windows 7) «Пуск -> Выполнить -> cmd» .

И сразу попробуем запустить нашу утилиту, и посмотрим, что у нас из этого выйдет:

Как видите, командная строка не знает что это за программа. Мы, конечно, можем написать по-другому, например:

Т.е. с указанием полного пути к утилите, то тогда она конечно запустится. Или также можно перейти в каталог test и уже от туда запустить утилиту, например:

В данном случае программа тоже запустится. Но согласитесь, что это все лишние движения, тем более, если мы собираемся использовать эту программу достаточно часто. Поэтому давайте изменим системную переменную path.

Примечание! Если Вам не нравится фон или цвет шрифта командной строки, то Вы легко можете изменить его, а как мы с Вами разговаривали в статье Настройка внешнего вида командной строки Windows .

Изменяем системную переменную path в Windows 7

Для этого открываем «Панель управления -> Система -> Дополнительные параметры системы».

Затем выбираем «Переменные среды ».

После у Вас откроется окно «Переменные среды » и Вы в нижней части окна в списке «Системных переменных » ищите переменную path и жмете «Изменить» .

В итоге у Вас откроется небольшое окошко «Изменение системной переменной », где Вы в поле «Значение переменной » дописываете в конце через точку запятой, путь к каталогу, в котором Вы будете хранить свои консольные утилиты. Например, я указал C:\test. После ввода жмем «ОК».

А теперь давайте проверим. Будем делать в точности, как и в первый раз, т.е. открываем командную строку и сразу пишем privet.bat и смотрим

Как видите, на этот раз у нас все заработало, даже без указания полного пути.

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

Я думаю достаточно, если есть вопросы, задавайте в комментариях. Удачи!

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

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

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

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

import os temp = os . environ [ "TEMP" ]

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

String temp = System . getenv (). get ("TEMP" );

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

string temp = System . Environment . GetEnvironmentVariable ("TEMP" );

На что влияет переменная окружения PATH ?

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

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

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

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

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

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

Эта переменная содержит список директорий, в которых операционная система должна искать исполняемые файлы. В качестве разделителя используется точка с запятой (;) в операционной системе 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 .

    Команда SET используется для просмотра и изменения переменных среды окружения в командной строке Windows. Переменные окружения - это переменные, принимаемые значения которых характеризуют среду, в которой выполняется текущая программа - пути системных файлов, сведения об аппаратных средствах, каталоги пользователя и т.п. Значения переменных среды формируются в процессе загрузки Windows, регистрации пользователя в системе, при выполнении отдельных процессов или с помощью команды SET . Для просмотра значения, принимаемого конкретной переменной можно воспользоваться командой:

SET переменная
SET PATH - отобразить значение переменной PATH
Для создания новой переменной, или изменения значения существующей, используется команда:

SET переменная=строка

переменная - Имя переменной среды.
строка - Строка символов, присваиваемая указанной переменной.

SET MyName=Vasya - установить значение переменной MyName

SET path=C:\progs;%path% - изменить значение переменной PATH , добавив в начало строки C:\progs

Значение, принимаемое переменной, доступно для обработки в командных файлах, при использовании ее имени, заключенного в знаки процента - % . Например команда выдачи текста на дисплей ECHO в виде:

ECHO date - выведет на экран слово "date", а команда
ECHO %date% выведет на экран значение переменной date , т.е. текущую дату в формате операционной системы.

Команда SET без параметров используется для вывода текущих значений переменных среды.

ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\Usr\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=TEST7
ComSpec=C:\windows\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Users\Usr
LOCALAPPDATA=C:\Users\Usr\AppData\Local
LOGONSERVER=\\TEST7
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=C:\windows\system32;C:\windows;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS; .VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 15 Model 3 Stepping 4, GenuineIntel
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0304
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\windows\system32\Windows PowerShell\v1.0\Modules\
PUBLIC=C:\Users\Public
SystemDrive=C:
SystemRoot=C:\windows
TEMP=C:\Users\Usr\AppData \Local\Temp
TMP=C:\Users\Usr\AppData \Local\Temp
USERDOMAIN=test7
USERNAME=Usr
USERPROFILE=C:\Users\Usr
windir=C:\windows

Кроме переменных, отображаемых в списке, при вызове команды SET, существуют и другие, значения которых изменяется динамически:

%CD% - принимает значение текущего каталога.
%DATE% - принимает значение текущей даты.
%TIME% - принимает значение текущего времени.
%RANDOM% - значение случайного числа в диапазоне между 0 и 32767.
%ERRORLEVEL% - текущее значение ERRORLEVEL, специальной переменной, которая используется в качестве признака результата выполнения программы.
%CMDEXTVERSION% значение версии расширенной обработки команд CMD.EXE.
%CMDCMDLINE% - раскрывается в исходную командную строку, которая вызвала командный процессор.

Если при вызове команды SET указать только часть имени, то будет выведен список переменных, имена которых начинаются с указанной строки. Например:

SET U - выведет значения всех переменных, имена которых начинаются с "U".

Команда SET поддерживает два дополнительных ключа:

SET /A выражение

SET /P variable=

Ключ /A указывает, что строка справа от знака равенства является числовым выражением, значение которого вычисляется. Обработчик выражений очень прост и поддерживает следующие операции, перечисленные в порядке убывания приоритета:

При использовании любых логических или двоичных операторов необходимо заключить строку выражения в кавычки. Любые нечисловые строки в выражении рассматриваются как имена переменных среды, значения которых преобразуются в числовой вид перед использованием. Если переменная с указанным именем не определена в системе, вместо нее подставляется нулевое значение. Это позволяет выполнять арифметические операции со значениями переменных среды, причем не нужно вводить знаки % для получения значений. Если команда SET /A вызывается из командной строки, а не из пакетного файла, она выводит окончательное значение выражения. Слева от любого оператора присваивания должно стоять имя переменной среды. Числовые значения рассматриваются как десятичные, если перед ними не стоит префикс:

0x - для шестнадцатеричных чисел
0 - для восьмеричных чисел.

Пример использования префиксов:

SET /A REZ=0xA+012
ECHO %REZ%

В данном командном файле значение переменной REZ вычисляется сложением числа 10, представленного в шестнадцатеричном виде (0xA) и числа 10 , представленного в восьмеричном (012).

Ключ /P позволяет установить значение переменной для входной строки, введенной пользователем. Показывает указанное приглашение promptString перед чтением введенной строки. Приглашение promptString может быть пустым. Данный ключ позволяет организовать диалог с пользователем в командном файле:

@ECHO OFF
SET /P NAME=Введите имя пользователя:
SET /P pass=Введите пароль:
ECHO Имя пользователя - %NAME% , Пароль - %PASS%

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

переменная:строка1=строка2 - заменяет в принимаемом значении переменной строку1 на строку2

Следующий командный файл использует замену символа "точка" на символ "тире" в значении переменной, соответствующем текущей дате:

@ECHO OFF
set tm=%DATE%
ECHO Дата1 = %tm%
SET tm=%DATE:.=-%
ECHO Дата2 = %tm%

Для выделения части значения, принимаемого переменной, используется следующая конструкция:

переменная:~x,y - где x - число пропускаемых символов от начала строки, а y - количество символов, используемых в качестве значения переменной.

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

@ECHO OFF
set tm=%TIME%
ECHO Время1 = %tm%
SET tm=%TIME:~0,5%
ECHO Время2 = %tm%

Если значение y (длина) не указана, то используется оставшееся до конца строки значение переменной. Если значение y отрицательно, то используется часть строки значения переменной от конца. Предыдущий пример можно изменить, указав, что в принимаемом значении времени отбрасываются 6 символов от конца:

@ECHO OFF
set tm=%TIME%
ECHO Время1 = %tm%
SET tm=%TIME:~0,-6%
ECHO Время2 = %tm%

Возможно использование число пропусков не задано, и используется отрицательное число, то принимаемое значение будет частью переменной от конца строки:

%PATH:~-10% - извлечет последние 10 символов переменной PATH

Нулевое значение можно не указывать, сохраняя формат подстановки:

%PATH:~0,-2% эквивалентно %PATH:~,-2%

При использовании переменных окружения в командных файлах существует определенное ограничение, связанное с тем фактом, что присваиваемое значение остается без изменения при его модификации внутри группы команд, задаваемой скобками, например в командах IF или FOR . Для обхода данного ограничения используется запуск командного процессора с параметром /V:ON и вместо знаков процента, для получения принимаемого переменной значения, используются восклицательные знаки. Кроме того, существует возможность использовать стандартный запуск командного процессора, но с локальным включением данного режима командой:

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


@ECHO OFF
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo Со знаком процента=%VAR% , Со знаком вопроса=!VAR!

Команда set VAR=after выполняется внутри подпрограммы, ограниченной скобками и, если убрать команду Setlocal EnableDelayedExpansion или не использовать для получения значения переменной VAR восклицательные знаки, ее значение останется старым (тем, что было установлено до входа в подпрограмму). Аналогичная же проблема наблюдается и тогда, когда значение переменной изменяется внутри цикла команды FOR . Например, для получения списка файлов текущего каталога такой командный файл не будет работать:

set LIST=
for %%i in (*) do set LIST=%LIST% %%i
echo %LIST%

Значение переменной LIST внутри цикла изменено не будет. Для того, чтобы это произошло, командный файл нужно изменить следующим образом:

Setlocal EnableDelayedExpansion
set LIST=
for %%i in (*) do set LIST=!LIST! %%i
echo %LIST%

Теперь, значение переменной LIST внутри цикла FOR будет изменяться, последовательно принимая значения имен файлов, разделенных пробелом ( set LIST=!LIST! %%i )

Сегодня рассказываем вам как добавить новую переменную $PATH в операционной системе macOS (OS X).

Если вам надоело в «Терминале» macOS каждый раз вводить определенные команды через ./команда , тогда необходимо добавить переменную окружения. То есть вам необходимо вам необходимо внести путь полный к команде утилиты в файл .bash_profile .

Как узнать полный путь к команде?

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

С помощью доп.меню

Сделайте «правый клик» по папке где находится команда и при появление контекстного меню нажмите кнопку ALT (OPTION) и «Скопируйте путь до».

С помощью терминала

Перетяните папку с командой в «Терминал» после чего вы сможете скопировать полный путь.

Как добавить переменную окружения в macOS?

Есть также 4 варианта — первый, это открытие файла .bash_profile с помощью Finder и внесение пути, второй и третий и четвертый с помощью терминала:

Добавить переменную в файла .bash_profile из Finder

Откройте ваш домашний католог (/ Users/ваше_имя ), включите и откройте файл текстовым редактором .bash_profile .

Добавьте в файл такую запись:

Добавить переменную окружения в macOS с помощью терминала и текстового редактора

Откройте терминал и напишите такую команду:

open -a /Applications/TextEdit.app ~/.bash_profile

Откроется окно с текстовым редактором, вам лишь нужно добавить запись

export PATH=$PATH:/ваш/путь/к/команде/

Закройте текстовый файл, все готово!

Добавить переменную окружения в macOS с помощью терминала

Откройте терминал и выполните команду:

echo "export PATH=$PATH:/ваш/путь/к/команде/" > .bash_profile

Все готово!

Добавить переменную окружения в macOS с помощью терминала и nano

Прежде чем начать, ознакомьтесь с работой . Откройте терминал и напишите команду:

nano ~/.bash_profile

добавьте запись:

export PATH=$PATH:/ваш/путь/к/команде/

Сохраните внесенные данные.

У вас остались еще дополнительные вопросы? Пишите их в комментариях, о том что у вас получилось или наоборот!

Вот и все! Больше полезных статей и инструкций читайте в разделе . Оставайтесь вместе с сайтом , дальше будет еще интересней!

Переменная PATH являет собой системную переменную, с помощью которой операционная система находит нужные исполняемые объекты в командной строке или окне терминала. В параметре переменной содержится список (через точку с запятой ; ) директорий, в которых будет происходить поиск исполняемого файла при вызове команды из консоли.

В операционной системе Windows системную переменную PATH можно задать с помощью системной утилиты в Панели управления Windows .

Опишем, как изменить значение переменной PATH в операционной системе Windows 10 .

В меню Пуск выполняем команду Система (Панель управления → Система и безопасность → Система):

Нажимаем на ссылку Дополнительные параметры системы :

Открываем окно Переменные среды:


В разделе Переменные среды и Системные переменные выбераем переменную среды PATH . Нажимаем Изменить . Если переменной PATH не существует, нажимаем Создать .

Для изменения системных переменных окружения, необходимо обладать соответствующими правами. Если таких нет - следует создать пользовательскую переменную.


В окне "Изменить переменную среды " (или Новая системная переменная ) укажите значение переменной среды PATH , после чего подтвердите действие нажатием на кнопку ОК .


Если вы используете переменную PATH не для командной строки, а других приложений, например модуль PHP , следует перезагрузить компьютер.
Понравилась статья? Поделитесь ей