Что такое PATH и другие переменные среды, и как я могу их установить или использовать?
Вопросы о
- установка переменных среды
-
PATH
здесь очень распространены, и в большинстве случаев ответы очень похожи друг на друга. В будущем было бы неплохо иметь хороший Q/A для этого.
Итак, вопрос: что такое переменные среды, например, исполняемый файл PATH
и как я могу изменить и использовать их в основных операционных системах?
Хороший ответ будет включать в себя простое объяснение того, какие переменные среды и особенно PATH
означает для ОС, а также простые рекомендации о том, как установить и прочитать их соответственно.
5 ответов
Что такое переменные среды?
Переменные среды содержат значения, связанные с текущей средой, такой как операционная система или пользовательские сеансы.
Дорожка
Один из самых известных называется PATH
в Windows, Linux и Mac OS X. Указывает каталоги, в которых исполняемые программы * находятся на компьютере, которые можно запускать, не зная и не вводя полный путь к файлу в командной строке. (Или в Windows, диалоговое окно " Выполнить " в меню "Пуск" или +R).
В Linux и Mac OS X он обычно содержит все bin
а также sbin
каталоги, актуальные для текущего пользователя. В Windows он содержит как минимум C:\Windows
а также C:\Windows\system32
каталоги - вот почему вы можете запустить calc.exe
или же notepad.exe
из командной строки или диалогового окна Run, но не 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 Panel » System » Advanced » Environment Variables
,Тип
control sysdm.cpl,,3
в диалоговом окне "Выполнить" (+R) и нажмитеEnvironment Variables
,
Для редактирования пользовательских переменных вы также можете набрать%windir%\System32\rundll32.exe sysdm.cpl,EditEnvironmentVariables
в диалоговом окне "Выполнить".
Щелкните правой кнопкой мыши (Мой) компьютер и выберите Свойства или просто нажмите+Перерыв.
- В XP нажмите на
Advanced » Environment Variables
, - В Vista + нажмите на
Advanced system settings » Environment Variables
,
- В XP нажмите на
Есть много других способов добраться до того же места, например, введя "переменные среды" в меню "Пуск" / "Экран поиска" и т. Д.
Переменные среды в Windows разделяются на значения, специфичные для пользователя и компьютера / системы. Вы можете просматривать и редактировать их значения там. Их текущие значения при запуске становятся доступными для всех программ.
Существует также Rapid Environment Editor, который помогает устанавливать и изменять переменные среды в Windows без необходимости углубляться в системные настройки. Еще одна программа с открытым исходным кодом для Windows, с помощью которой можно легко редактировать среду пути, - это редактор путей.
Командная строка
Формат
Переменные среды в Windows обозначены символом процента (%), окружающим имя:
%name%
эхо
Чтобы отобразить значение переменной среды вcmd.exe
, типecho %name%
,
C:\>echo %USERPROFILE%
C:\Users\Daniel
задавать
Чтобысоздать / установить переменную, используйте set varname=value
:
C:\>set FunnyCatPictures=C:\Users\Daniel\Pictures\Funny Cat Pictures
C:\>set FunnyCatPicturesTwo=%USERPROFILE%\Pictures\Funny Cat Pictures 2
Чтобыдобавить / добавить переменную, используйте set varname=value;%varname%
:
C:\>set Penguins=C:\Linux
C:\>set Penguins=C:\Windows;%Penguins%
C:\>echo %Penguins%
C:\Windows;C:\Linux
Переменные среды, установленные таким образом, доступны в течение (остальной части) процесса командной строки, в котором они установлены, и доступны процессам, которые запускаются после того, как переменные были установлены.
Setx
Чтобысоздать / установить переменную постоянно, используйте setx varname "value"
:
C:\>setx FunnyCatPictures "C:\Users\Daniel\Pictures\Funny Cat Pictures"
[Restart CMD]
C:\>echo %FunnyCatPictures%
C:\Users\Daniel\Pictures\Funny Cat Pictures
В отличие отset
, знака равенства нет, и значение должно быть заключено в кавычки, если оно содержит пробелы. Обратите внимание, что переменные могут расширяться до строки с пробелами (например,%PATH%
становится C:\Program Files
), поэтому лучше включать кавычки вокруг значений, которые содержат любые переменные.
Вы должны вручную добавитьsetx
в версиях Windows ранее, чем Vista.
Средства поддержки Windows XP с пакетом обновления 2 (SP2)
Список переменных среды 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 Bourne.
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
- обычно используемые установщиками для обеспечения доступности исполняемых файлов, которые они предоставляют, из оболочки, не затрагивая общесистемные или пользовательские файлы конфигурации. Эти файлы просто содержат один путь на строку. Например, / Программы /Mozilla/ Календарь /bin.
Внешняя ссылка:
Переменные среды в XP
Средства поддержки Windows XP с пакетом обновления 2 (включаетsetx
)
Переменные среды в Windows Vista и Windows 7
Добавление исполняемых файлов в диалоговое окно "Выполнить"
Советы по Mac OSX - настройка переменных среды
TLDP: Путь Howto
This post is from a more technical point of view than Daniel's, but doesn't explain as much the concepts.
The Wikipedia article is also an excellent referrence.
Linux and most BSDs
In most command-line shells, temporary environment variables are set using export
(sh, bash, zsh) or setenv
(csh, tcsh) commands.
Examples for prepending
$HOME/bin
в$PATH
in bash or zsh:export PATH="$HOME/bin:$PATH"
(In this particular case,
export
is unnecessary sincePATH
is already part of the environment.)csh, tcsh:
setenv PATH "$HOME/bin:$PATH"
Persistent environment variables can be set during several separate stages:
Авторизоваться:
Login session setup: Linux
pam_env
, which usually reads from/etc/environment
Terminal logins: The shell's "profile" files.
bash
использования/etc/profile
and the first one of:~/.bash_profile
,~/.bash_login
,~/.profile
, Manual pagebash(1)
section Invocation.Often, the user's profile file includes an explicit call for
~/.bashrc
тоже.zsh
: Manual pagezsh(1)
section Startup/shutdown files.csh
and other shells: See apropriate manual pages.
Графический логин: не уверен; может отличаться в зависимости от менеджера входа в систему. 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
Переменная обрабатывается специально: системные и пользовательские настройки объединяются в окончательное значение.Изменения сохраняются в Реестре (см. Ниже) и мгновенно применяются ко всем новым процессам, созданным в Проводнике (графическая оболочка), например, через меню "Пуск".
Общесистемные переменные среды хранятся в реестре,
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
,
Q: ЧТО ТАКОЕ переменные среды?
A: Переменные среды похожи на переменные в любом языке программирования. В случае систем Windows или Unix они хранят различные значения, чтобы позволить программам и задачам получать необходимую информацию об ОС или "среде". Например:
USERPROFILE: каталог пользователя в файлах ОС.
ПОЧТА: где можно найти почту пользователя в файлах ОС.
Q: ЧТО конкретно является переменной PATH?
A: Переменная PATH задает пути к каталогам, которые нужно искать при выполнении команд, как для команд RUN, так и для внутренних вызовов из программ. Это не позволяет программе знать свое место установки для вызова других исполняемых процессов.
Он просматривает переменную PATH системы Windows Environment и проверяет каждое местоположение на наличие указанного исполняемого файла. Таким образом, добавление местоположения в переменную PATH позволяет напрямую вызывать исполняемый файл.
Согласно этой статье в Википедии:
Когда команда вводится в командной оболочке или системный вызов выполняется программой для выполнения программы, система сначала ищет текущий рабочий каталог, а затем ищет путь, просматривая каждый каталог слева направо.
Q: КАК добавить местоположение в переменную PATH?
A: Вам необходимо отредактировать строку переменной переменной PATH Environment Variables, чтобы включить в нее местоположение вашего исполняемого файла.
Один из способов сделать это описан здесь:
- Откройте меню "Пуск" и щелкните правой кнопкой мыши на компьютере. Выберите Свойства.
- Выберите Расширенные настройки системы.
- На вкладке "Дополнительно" выберите "Переменные среды".
- Выберите РЕДАКТИРОВАТЬ или НОВЫЙ. (для 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
's, настройка подсказок, управление историей, настройка терминала, определение функций и т. д. (интерактивная настройка) в части~/.bashrc
защищенный для запуска только в интерактивном режиме; - Избавьтесь от других файлов запуска bash, потому что их существование определяет, будет ли путь управления через
.profile
а также.bashrc
работает как положено. То есть, если нет особых требований сделать иначе, удалите~/.bash_profile
&~/.bash_login
; - Когда я нахожусь в приглашении bash, и мне нужно обновить некоторые настройки по умолчанию, я редактирую
~/.bashrc
файл, а затем просто отправьте его с. ~/.bashrc
чтобы получить эти изменения в моей текущей оболочке. - Когда я делаю изменения в переменную окружения, как
PATH
Мне нужно изменить и источник моего~/.profile
; - Я помещаю свои вызовы в fink, port и brew в
.profile
,
Это мои 2 цента на эту тему.
Windows 10, без учетной записи администратора
Панель управления -> Учетные записи пользователей -> Учетные записи пользователей -> Изменить переменные среды.
Обратите внимание, что вам нужно нажать на заголовок «Учетные записи пользователей» :
Опять же, вам нужно нажать на заголовок «Учетные записи пользователей» :