- Вопрос или проблема
- Что такое переменные окружения?
- Path
- Другие переменные
- Создание новых переменных окружения
- Windows
- Графический интерфейс
- Командная строка
- Формат
- echo
- set
- setx
- Список переменных окружения Windows
- Производные Unix (FreeBSD, GNU / Linux, OS X)
- Внешние ссылки:
- Linux и большинство BSD
- Серия Windows NT
- MS-DOS, 16-битные Windows, серия Windows 9x
- VMS
- Windows 10, без учетной записи администратора
- Ответ или решение
- Что такое переменные окружения и переменная PATH?
- Определение переменных окружения
- Переменная PATH
- Пример использования переменной PATH
- Настройка и использование переменных окружения
- Windows
- Linux и macOS
- Заключение
Вопрос или проблема
Вопросы о
- установке переменных окружения
- переменной
PATH
здесь очень распространены, и в большинстве случаев ответы на них очень похожи друг на друга. В будущем было бы неплохо иметь хороший раздел вопросов и ответов на эту тему.
Итак, вопрос: Что такое переменные окружения, такие как исполняемая PATH
, и как я могу изменить и использовать их в основных операционных системах?
Хороший ответ должен содержать простое объяснение того, что такое переменные окружения, и, в частности, что означает PATH
для операционной системы, а также простые рекомендации о том, как их правильно установить и считать.
Что такое переменные окружения?
Переменные окружения хранят значения, относящиеся к текущей среде, такой как операционная система или пользовательские сеансы.
Path
Одна из самых известных называется PATH
в Windows, Linux и Mac OS X. Она указывает каталоги, в которых находятся исполняемые программы*, которые могут быть запущены без необходимости знать и вводить полный путь к файлу в командной строке. (Или в Windows в диалоговом окне Выполнить в меню Пуск или с помощью +R).
В Linux и Mac OS X она обычно содержит все каталоги bin
и sbin
, относящиеся к текущему пользователю. В Windows она содержит как минимум каталоги C:\Windows
и C:\Windows\system32
— поэтому вы можете запустить calc.exe
или notepad.exe
из командной строки или диалога Выполнить, но не firefox.exe
. (Firefox находится в C:\Program Files\Mozilla Firefox
. Для получения информации о том, как добавить Firefox, перейдите сюда.)
Например, ввод calc
(расширение .exe
можно опустить) в командной строке в Windows запустит Калькулятор Windows.
* Вы можете добавить поддержку других расширений файлов, кроме .exe
, отредактировав %PATHEXT%
.
Другие переменные
Другие переменные могут сообщать программам, какой тип терминала используется (TERM
в Linux/Mac OS X), или, в случае Windows, где находится папка Windows (например, %WINDIR%
это C:\Windows
).
Создание новых переменных окружения
В Windows, Linux и Unix возможно создавать новые переменные окружения, чьи значения затем становятся доступными всем программам при запуске.
Вы можете использовать это при написании сценариев или программ, которые устанавливаются или разворачиваются на нескольких машинах и нуждаются в ссылках на значения, которые специфичны для этих машин. Хотя схожий эффект можно достичь с помощью настроек конфигурации, специфичных для программы, проще сделать это с использованием переменной окружения, если нескольким программам нужно получить доступ к одному и тому же значению.
Windows
Графический интерфейс
-
Откройте
Панель управления » Система » Дополнительно » Переменные окружения
. -
Введите
control sysdm.cpl,,3
в диалоговом окне Выполнить (+R) и нажмитеПеременные окружения
.
Для редактирования пользовательских переменных вы также можете ввести%windir%\System32\rundll32.exe sysdm.cpl,EditEnvironmentVariables
в диалоговом окне Выполнить.
-
Щелкните правой кнопкой мыши (Мой) Компьютер и выберите Свойства или просто нажмите +Break.
- В XP нажмите
Дополнительно » Переменные окружения
. - В Vista+ нажмите
Дополнительные параметры системы » Переменные окружения
.
- В XP нажмите
-
Существует множество других способов добраться до того же места, например, введя “переменные окружения” в поле поиска меню Пуск/Экрана и так далее.
Переменные окружения в Windows делятся на пользовательские и системные/машинные значения. Вы можете просмотреть и редактировать их значения там. Их текущие значения при запуске становятся доступными всем программам.
Существует также Rapid Environment Editor, который помогает устанавливать и изменять переменные окружения в Windows без необходимости глубоко погружаться в системные настройки. Еще одна программа с открытым исходным кодом для Windows, с помощью которой можно очень удобно редактировать переменные окружения пути, это Path Editor.
Командная строка
Формат
Переменные окружения в Windows обозначаются процентными знаками (%) вокруг имени:
%имя%
echo
Чтобы отобразить значение переменной окружения в cmd.exe
, введите echo %имя%
.
C:\>echo %USERPROFILE%
C:\Users\Daniel
set
Чтобы создать/установить переменную, используйте set имя=значение
:
C:\>set FunnyCatPictures=C:\Users\Daniel\Pictures\Funny Cat Pictures
C:\>set FunnyCatPicturesTwo=%USERPROFILE%\Pictures\Funny Cat Pictures 2
Чтобы добавить переменную, используйте set имя=значение;%имя%
:
C:\>set Penguins=C:\Linux
C:\>set Penguins=C:\Windows;%Penguins%
C:\>echo %Penguins%
C:\Windows;C:\Linux
Переменные окружения, установленные таким образом, доступны (в течение оставшегося времени) процесса командной строки, в котором они были установлены, и доступны процессам, которые запускаются после установки переменных.
setx
Чтобы создать/установить переменную постоянно, используйте setx имя "значение"
:
C:\>setx FunnyCatPictures "C:\Users\Daniel\Pictures\Funny Cat Pictures"
[Перезапустите CMD]
C:\>echo %FunnyCatPictures%
C:\Users\Daniel\Pictures\Funny Cat Pictures
В отличие от set
, нет знака равенства, и значение должно быть заключено в кавычки, если в нем есть пробелы. Обратите внимание, что переменные могут расширяться в строку с пробелами (например, %PATH%
становится C:\Program Files
), поэтому лучше всего включать кавычки вокруг значений, которые содержат любые переменные.
Вы должны вручную добавить setx
для версий Windows, более ранних чем Vista.
Инструменты поддержки Windows XP Service Pack 2
Список переменных окружения Windows
Вот список стандартных переменных окружения, которые встроены в Windows. Некоторые примеры: %WINDIR%
, %SystemRoot%
, %USERPROFILE%
и %APPDATA%
.
Как и большинство имен в Windows, они нечувствительны к регистру.
Производные Unix (FreeBSD, GNU / Linux, OS X)
Переменные окружения в Linux начинаются с знака доллара ($), такие как $HOME или $HOSTNAME. Многие известные и стандартные переменные пишутся заглавными буквами, чтобы подчеркнуть это. Имейте в виду, что имена переменных чувствительны к регистру, что означает, что $User и $USER совершенно не связаны с точки зрения оболочки.
Производные Unix определяют системные переменные в скриптах оболочки, которые в основном находятся в папке /etc
, но пользовательские значения могут быть заданы для этих переменных в скриптах, расположенных в домашней папке (например, /etc/profile
, $HOME/.bash_profile
). Файл .profile
в домашней папке — это общее место для определения пользовательских переменных.
Установка переменных
Эти файлы являются обычными скриптами оболочки и могут содержать не только объявления переменных окружения. Чтобы установить переменную окружения, используйте export
. Чтобы показать ваши текущие определенные переменные окружения в терминале, выполните env
.
Команда export
является стандартным способом определения переменных. Синтаксис очень интуитивный. Результат идентичен для этих двух строк, но первый вариант предпочтительнее в случае, если важно сохранить совместимость с предшествующей оболочкой POSIX.
var=value; export var
export var=value
Оболочка C и ее потомки используют совершенно другой синтаксис; там команда — setenv
.
Смотрите проект документации Linux, Path HOWTO для более подробного обсуждения на эту тему.
Возможно, в противоречие с общепринятым мнением, OS X более “Unix”, чем Linux. Кроме упомянутых файлов, $PATH можно изменить в этих файлах:
/etc/paths
содержит все стандартные каталоги, которые добавляются к пути, такие как/bin
и/usr/sbin
.- Любой файл в
/etc/paths.d
— обычно используется установщиками, чтобы сделать исполняемые файлы, которые они предоставляют, доступными из оболочки, не затрагивая системные или пользовательские файлы конфигурации. Эти файлы просто содержат один путь на строку. например, /Programs/Mozilla/Calendar/bin.
Внешние ссылки:
Переменные окружения в XP
Инструменты поддержки Windows XP Service Pack 2 (Включаетsetx
)
Переменные окружения в Windows Vista и Windows 7
Добавление исполняемых файлов в диалоговое окно Выполнить
Советы по Mac OSX – Установка переменных окружения
TLDP: Path Howto
Этот пост с более технической точки зрения, чем у Даниэля, но не объясняет концепции так подробно.
Статья Wikipedia также является отличным справочным источником.
Linux и большинство BSD
В большинстве командных оболочек временные переменные окружения устанавливаются с помощью команд export
(sh, bash, zsh) или setenv
(csh, tcsh).
-
Примеры для добавления
$HOME/bin
к$PATH
в bash или zsh:export PATH="$HOME/bin:$PATH"
(В данном случае
export
не обязательно, так какPATH
уже является частью окружения.) -
csh, tcsh:
setenv PATH "$HOME/bin:$PATH"
Постоянные переменные окружения могут быть установлены на различных этапах:
-
Вход в систему:
-
Настройка сеанса входа: Linux
pam_env
, который обычно читает из/etc/environment
-
Терминальные входы: “профиль” оболочки.
-
bash
использует/etc/profile
и первый из:~/.bash_profile
,~/.bash_login
,~/.profile
. Страница справкиbash(1)
раздел Invocation.Часто файл профиля пользователя включает явный вызов для
~/.bashrc
тоже. -
zsh
: Страница справкиzsh(1)
раздел Файлы запуска/остановки. -
csh
и другие оболочки: смотрите соответствующие страницы справки.
-
-
Графический вход: не уверен; может варьироваться в зависимости от менеджера входа. GDM, похоже, читает
~/.profile
в моей системе.
-
-
Открытие окна терминала:
bash
использует/etc/bash.bashrc
и~/.bashrc
.
Серия Windows NT
-
В командной строке (
cmd.exe
) используйтеset name=value
, чтобы изменить переменные окружения для этого окна.Чтобы добавить
c:\bin
к%PATH%
, используйте:set path=%path%;c:\bin
Это затрагивает только этот процесс
cmd.exe
и любые новые процессы, запущенные из него. -
Чтобы внести постоянные изменения, используйте Панель управления → Система → Дополнительно → Переменные окружения. (документы)
Примечание: Хотя настройки пользователя обычно переопределяют системные, переменная
PATH
обрабатывается особенно: как системные, так и пользовательские настройки объединяются в окончательное значение.Изменения сохраняются в реестре (смотрите ниже), и применяются сразу для всех новых процессов, созданных Explorer (графической оболочкой), например, через меню Пуск.
-
Системные переменные окружения хранятся в реестре,
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
и загружаются при загрузке системы.Пользовательская среда хранится в
HKCU\Environment
и загружается при входе пользователя. -
По умолчанию система также ищет команды
set
в файлеAUTOEXEC.NT
.
MS-DOS, 16-битные Windows, серия Windows 9x
-
В командной строке MS-DOS (
command.com
) используйтеset name=value
, как в WinNT.Аналогично, запуск
set
в интерактивном режиме затрагивает только этот экземплярcommand.com
, а также любые новые процессы, запущенные из него. -
Чтобы внести постоянные изменения, добавьте или отредактируйте соответствующие строки
set
вC:\AUTOEXEC.BAT
, затем перезагрузите.- Рабочий обход, чтобы избежать перезагрузки для Windows 9x: откройте окно командной строки MS-DOS, установите соответствующие переменные, закройте существующий процесс Explorer (Пуск → Выключение → удерживая Ctrl+Shift, нажмите Отмена), запустите
explorer.exe
из окна командной строки MS-DOS.
- Рабочий обход, чтобы избежать перезагрузки для Windows 9x: откройте окно командной строки MS-DOS, установите соответствующие переменные, закройте существующий процесс Explorer (Пуск → Выключение → удерживая Ctrl+Shift, нажмите Отмена), запустите
VMS
(Не удержался.)
DCL не имеет концепции “пути”, но различные определения символов и команд могут быть помещены в SYS$LOGIN:LOGIN.COM
.
Вопрос: Что такое переменные окружения?
Ответ: Переменные окружения похожи на переменные в любом языке программирования. В случае систем Windows или Unix они хранят различные значения для того, чтобы программы и задачи могли получать необходимую информацию ОС или “информацию окружения”. Например:
USERPROFILE: директория пользователей в файлах ОС.
MAIL: где можно найти почту пользователя в файлах ОС.
Вопрос: Что такое переменная PATH в частности?
Ответ: Переменная PATH устанавливает пути к директориям, в которых осуществляется поиск при выполнении команд, как для команд RUN, так и для внутренних вызовов из программ. Это предотвращает необходимость программе знать свое местоположение установки для вызова других исполняемых процессов.
Она обращается к переменной PATH системы окружения Windows и проверяет каждое местоположение на наличие данного исполняемого файла. Таким образом, добавление местоположения в переменную PATH позволяет вызывать исполняемый файл напрямую.
Согласно этой статье в Википедии:
Когда команда вводится в командной оболочке или программа вызывает системный вызов для выполнения программы, система в первую очередь ищет в текущем рабочем каталоге, а затем ищет по пути, проверяя каждый каталог слева направо
Вопрос: Как добавить местоположение в переменную PATH?
Ответ: Вам нужно отредактировать строку переменной переменной окружения PATH, чтобы включить местоположение вашего исполняемого файла.
Один из способов сделать это описан здесь:
- Откройте меню Пуск и щелкните правой кнопкой мыши на Компьютер. Выберите Свойства.
- Выберите Дополнительные системные параметры.
- На вкладке Дополнительно выберите Переменные окружения.
- Выберите РЕДАКТИРОВАТЬ или НОВУЮ. (для PATH вы, скорее всего, захотите РЕДАКТИРОВАТЬ).
- Добавьте ваш путь. например:
C:\wamp\bin\php\php5.5.12;
Надеюсь, это прояснит некоторые вопросы.
Для bash
оболочки глобальные (не терминальные) переменные окружения PATH
я следую соглашению, используемому в моей установке Ubuntu VM – другие оболочки будут различаться:
Предостережение: Вся последовательность запуска оболочки, в которой последовательно открываются файлы .bashrc
, .profile
и т.д., в каком порядке? Когда мне нужно повторно войти в систему, чтобы получить доступ к вновь определенным переменным, псевдонимам и т.д.? Какое различие между сеансами входа, интерактивными и неинтерактивными оболочками – я действительно использую cron
? И почему, когда я выполняю . ~/.bashrc
, моя глупая переменная PATH
становится все длиннее и длиннее? Это ключевые вопросы, которые приходят на ум, когда я думаю о своей переменной PATH
.
На самом деле, я только что полностью переписал все свои файлы запуска оболочки bash, заимствовав идеи из файлов-скелетов Ubuntu и cygwin, и вот некоторые из моих выводов:
- Экспортируйте
PATH
и другие глобальные переменные окружения (т.е.LD_LIBRARY_PATH
) переменные в.profile
; - Используйте логику в
~/.profile
, чтобы открыть$HOME/.bashrc
, если он существует; - Фиксировать выполнение
~/.bashrc
с проверкой на интерактивное выполнение, выйти в противном случае; - Поместите все псевдонимы,
shopt
, настройку запроса, управление историей, настройку терминала, определение функций и т.д. (настройка, связанная с интерактивностью) в ту часть~/.bashrc
, которая защищена только для выполнения в интерактивном режиме; - Избавьтесь от других файлов запуска bash, потому что их наличие определяет, работает ли контрольный путь через
.profile
и.bashrc
как ожидается. То есть, если нет специфических требований делать иначе, уберите~/.bash_profile
и~/.bash_login
; - Когда я нахожусь на запросе bash, и мне нужно обновить какую-то настройку по умолчанию, я редактирую свой файл
~/.bashrc
, а затем просто прослушиваю его с помощью. ~/.bashrc
, чтобы сохранить эти изменения в моей текущей оболочке. - Когда я вношу изменения в такую переменную окружения, как
PATH
, мне нужно изменить и прослушать свой~/.profile
; - Я помещаю свои вызовы fink, port и brew в специальную настройку в
.profile
.
Вот мои размышления по этой теме.
Windows 10, без учетной записи администратора
Панель управления -> Учетные записи пользователей -> Учетные записи пользователей -> Изменить мои переменные окружения
Обратите внимание, что вам нужно щелкнуть по заголовку “Учетные записи пользователей”:
Опять же, вам нужно щелкнуть по заголовку “Учетные записи пользователей”:
Переменные окружения Linux в закулисье
В этом ответе я хочу объяснить, как работают переменные окружения немного подробнее под Linux, чтобы помочь немного развеять мифы.
Возможно, концепции будут похожи в других операционных системах, но я ими не знаком.
Где хранятся переменные окружения внутри программы?
Основной вопрос: Где фактически хранится строка окружения?.
Когда вы просите свою операционную систему запустить программу, кроме пути к исполняемому файлу, вы также сообщаете ей дополнительную информацию о том, как вы хотели бы ее запустить, а именно:
- какие переменные окружения у программы?
- какие аргументы командной строки у программы?
При запуске программы операционная система будет хранить эту дополнительную информацию в оперативной памяти программы, так же как любые другие переменные, которые программисты включили в нее, так что программа может в основном просто получить к ним доступ, как к глобальным переменным.
Также каждая запущенная программа владеет своей собственной версией переменных окружения, которая может отличаться от версии любой другой программы.
В Linux переменные окружения хранятся в верхней части виртуальной памяти программы, рядом с аргументами командной строки:
Вы также можете проверить это, просто напечатав адрес различных типов переменных в программе на C следующим образом:
#include <stdio.h>
int main(int argc, char **argv, char **env)
{
printf("argv holds %p\n", argv);
printf("argv[0] holds %p\n", argv[0]);
printf("env holds %p\n", env);
printf("env[0] holds %p\n", env[0]);
return 0;
}
что позволит вам восстановить само расположение памяти.
Как переменные окружения устанавливаются с помощью системного вызова, который запускает программу?
Системный вызов в Linux — это название интерфейсов, которые программы используют для общения с операционной системой и запроса ее на выполнение задач, таких как запись в stdout и запуск нового процесса.
Системный вызов, который запускает новый процесс, называется execv
. Глядя на его страницу справки:
man execv
мы можем увидеть несколько вариантов оберток C, которые можно использовать для вызова самого системного вызова:
int execl(const char *pathname, const char *arg, ...
/*, (char *) NULL */);
int execlp(const char *file, const char *arg, ...
/*, (char *) NULL */);
int execle(const char *pathname, const char *arg, ...
/*, (char *) NULL, char *const envp[] */);
int execv(const char *pathname, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execvpe(const char *file, char *const argv[], char *const envp[]);
Далее объясняется, как C интерфейсы определяют переменные окружения нового процесса:
e – execle(), execvpe()
Окружение нового образа процесса задается через аргумент envp. Аргумент envp — это массив указателей на строки, оканчивающиеся нулем, и должен быть завершен нулевым указателем.
Все другие функции exec() (которые не включают ‘e’ в суффикс) получают окружение нового образа процесса из внешной переменной environ в вызывающем процессе.
На: https://stackoverflow.com/questions/2050961/is-argv0-name-of-executable-an-accepted-standard-or-just-a-common-conventi/42291142#42291142 я привожу пример использования варианта execve
для установки переменных окружения:
#define _XOPEN_SOURCE 700
#include <unistd.h>
int main(void) {
char *argv[] = {"yada yada", NULL};
char *envp[] = {NULL};
execve("b.out", argv, envp);
}
Я думаю, что окончательный системный вызов просто принимает “массив указателей на строки, оканчивающиеся нулем” на вход, но было бы неплохо подтвердить это.
Как установить переменные окружения из вашей оболочки для одной команды?
Это сильно зависит от оболочки и было хорошо освещено в: https://superuser.com/a/284361/128124
Тем не менее, стоит подчеркнуть, что за кулисами оболочка просто переводит строку команды в нижележащий вызов execv
, который выполняет фактическую работу по запуску программы с желаемыми переменными окружения.
Как установить переменные окружения из конфигурационных файлов, чтобы использовать их для всех команд
Смотрите, например: https://stackoverflow.com/questions/532155/linux-where-are-environment-variables-stored
Реализация переменной окружения PATH
Теперь давайте сосредоточимся на переменной окружения PATH
в частности.
С точки зрения реализации некоторые обертки C, упомянутые в man execv
, реализуют поиск по PATH
. Я полагаю, что это происходит в пространстве пользователя, и что ядро Linux берет только окончательный разрешенный абсолютный путь к найденному исполняемому файлу.
man execv
упоминает:
p – execlp(), execvp(), execvpe()
Эти функции дублируют действия оболочки в поиске исполняемого файла, если указанное имя файла не содержит символа слэша (/). Файл ищется в списке каталогов, разделенных двоеточием, указанном в переменной окружения PATH. Если эта переменная не определена, список путей по умолчанию включает каталоги, возвращаемые confstr(_CS_PATH) (которые обычно возвращают значение “/bin:/usr/bin”) и, возможно, также текущий рабочий каталог; см. ЗАМЕТКИ для подробной информации.
execvpe() ищет программу, используя значение PATH из окружения вызывающего кода, а не из аргумента envp.
Если указанное имя файла включает символ слэша, то PATH игнорируется, и исполняется файл по указанному пути.
В дополнение к этому, определенные ошибки обрабатываются особенно.
Если доступ к файлу запрещен (попытка execve(2) не удалась с ошибкой EACCES), эти функции продолжат искать по остальному поисковому пути. Однако, если другой файл не найден, они вернут код ошибки errno установленный как EACCES.
Если заголовок файла не распознан (попытка execve(2) не удалась с ошибкой ENOEXEC), эти функции выполнят оболочку (/bin/sh) с путем файла в качестве первого аргумента. (Если эта попытка потерпит неудачу, дальнейший поиск не производится.)
Все другие функции exec() (которые не включают ‘p’ в суффикс) принимают первым аргументом (относительный или абсолютный) путь, который идентифицирует программу для выполнения.
Устойчивость стандартов переменной окружения PATH
Одной из заметных усилий по стандартизации, охватывающих переменную окружения PATH
, является POSIX, которому в значительной степени следуют Linux и Mac OS, но не Windows.
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08 охватывает саму переменную:
PATH
Эта переменная будет представлять последовательность префиксов путей, которые некоторые функции и утилиты применяют при поиске исполняемого файла, известного только по имени файла. Префиксы должны быть разделены
<colon>
(‘:’). Когда префикс ненулевой длины применяется к этому имени файла,<slash>
будет вставлен между префиксом и именем файла, если префикс не заканчивался на<slash>
. Префикс нулевой длины является устаревшей функцией, указывающей на текущий рабочий каталог. Он отображается как два смежных<colon>
символа (“::”), как начальный<colon>
перед остальной частью списка или как конечный<colon>
, следуя остальной части списка. Строго соблюдающее приложение должно использовать фактический путь (например, .) для представления текущего рабочего каталога в PATH. Список должен быть просмотрен от начала до конца, применяя имя файла к каждому префиксу, пока не будет найден исполняемый файл с указанным именем и соответствующими разрешениями на выполнение. Если запрашиваемый путь содержит<slash>
, поиск по префиксам путей не будет выполнен. Если путь начинается с<slash>
, указанный путь будет разрешен (см. Разрешение имени пути). Если PATH не установлен или установлен в нуль, поиск пути определяется реализацией.Поскольку
<colon>
является разделителем в этом контексте, имена директорий, которые могут использоваться в PATH, не должны содержать символ<colon>
.
Существует также страница о семействе функций execv
: https://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html#tag_16_111, которая, похоже, содержит те же сведения, что и man execv
, обсуждая как поиск по PATH
, так и установку переменных окружения.
Ответ или решение
Что такое переменные окружения и переменная PATH?
Определение переменных окружения
Переменные окружения — это пары "ключ-значение", которые хранят информацию о среде выполнения операционной системы, пользовательских сеансах и системных конфигурациях. Они используются различными программами для получения необходимой информации. Например, переменная окружения USERPROFILE
в Windows указывает на каталог пользователя, а переменная HOME
в Unix-системах указывает на домашний каталог пользователя.
Переменная PATH
Переменная PATH
— одна из важнейших переменных окружения в любой операционной системе, включая Windows, Linux и macOS. Она определяет список директорий, в которых система ищет исполняемые файлы, когда пользователь вводит команду в командной строке или терминале. Это позволяет запускать программы без указания полного пути к ним.
Когда вы вводите команду, система сначала проверяет текущую рабочую директорию, а затем ищет исполняемый файл в директориях, перечисленных в переменной PATH
, в порядке их указания. Если исполняемый файл находится в одной из указанных директорий, он выполнится. Если PATH
пустая или не определена, поиск выполняется только в текущей директории.
Пример использования переменной PATH
На Windows, например, лучше всего видно, как работает переменная PATH
, когда вы пытаетесь запустить встроенные приложения, такие как калькулятор или блокнот, просто вводя их имена в командную строку. Когда вы вводите calc
или notepad
, система ищет их в директориях, перечисленных в переменной PATH
, и находит их в стандартных директориях, таких как C:\Windows
.
Настройка и использование переменных окружения
Настройка переменных окружения может различаться в зависимости от операционной системы. Ниже приведены инструкции для Windows, Linux и macOS.
Windows
-
Через графический интерфейс:
- Откройте
Панель управления
→Система и безопасность
→Система
→Дополнительные параметры системы
. - В разделе
Дополнительно
нажмитеПеременные среды
. - В разделе
Переменные среды
вы сможете создать, изменить или удалить переменные окружения. Для редактирования переменнойPATH
выберите ее и нажмитеИзменить
, добавив новый путь к исполняемым файлам.
- Откройте
-
Через командную строку:
- Чтобы временно установить переменную, используйте команду:
set VARIABLENAME=value
. - Для добавления директории в
PATH
:set PATH=%PATH%;C:\NewDirectory
- Для постоянного изменения используйте команду
setx
:setx VARIABLENAME "value"
- Чтобы временно установить переменную, используйте команду:
Linux и macOS
-
Через командную строку:
- Чтобы временно установить переменную, введите:
export VARIABLE_NAME=value
- Чтобы добавить директорию в
PATH
:export PATH="$HOME/bin:$PATH"
- Чтобы временно установить переменную, введите:
-
Для постоянного изменения:
Для сохранения изменений вы можете добавить команды экспорта в файл конфигурации вашего шелла, обычно это.bashrc
,.bash_profile
или.profile
. Например, откройте.bashrc
в вашем домашнем каталоге и добавьте:export PATH="$HOME/bin:$PATH"
После добавления, примените изменения, введя:
source ~/.bashrc
Заключение
Переменные окружения, включая переменную PATH
, играют критически важную роль в настройке и управлении системами. Понимание того, как их настроить, а также как они функционируют, поможет пользователям и администраторам системы оптимизировать свои рабочие процессы и эффективно управлять средой выполнения. Настройка переменных окружения не только облегчает запуск приложений, но и помогает в разработке, автоматизации и управлении системами.