Что такое PATH и другие переменные среды, и как я могу их установить или использовать?


341

Вопросы о

  • установка переменных среды
  • PATH

здесь очень распространены, и в большинстве случаев ответы очень похожи друг на друга. В будущем было бы неплохо иметь хороший Q / A для этого.

Поэтому возникает вопрос: что такое переменные среды, например, исполняемый файл PATH, и как я могу их изменить и использовать в основных операционных системах?

Хороший ответ будет включать в себя простое объяснение того, что переменные среды и особенно PATHзначат для ОС, а также простые рекомендации о том, как их устанавливать и читать соответственно.


2
Усталый от необходимости делать это вручную каждый раз, когда мне было нужно, я написал несколько записей в реестре, чтобы добавить записи контекстного меню для AddToPath и RemoveFromPath в папки, используя бесплатное приложение pathed.exe. Ниже приведена ссылка на полное руководство: addictivetips.com/windows-tips/… Теперь я могу очень легко добавлять папки в переменную PATH или удалять их из нее без необходимости редактировать какой-либо файл или беспокоиться о том, чтобы испортить форматирование переменной , Надеюсь, это поможет. =)
Haroon Q. Raja

1
В Windows есть ярлык для открытия свойств System т.е. Панель управления -> Система Это клавиша WIN на клавиатуре + Пауза / Обрыв (WIN + Break). Это чрезвычайно полезно и ускоряет процесс установки новых переменных окружения на Win8, потому что там вы должны щелкнуть через несколько окон в современном пользовательском интерфейсе (да. Если это современно, я вырасту кактус на моей ладони), что просто раздражает. Конечно, вы можете создать сценарий powershell или использовать команду setx и больше не беспокоиться об этом: D
termil0r

В Windows 8 самая быстрая навигация к изменяющимся системным и пользовательским переменным среды - использование поиска. <kbd> Win </ kbd> + <kbd> W </ kbd> запускает поиск всех настроек. Поиск envи необходимые параметры перечислены.
FRIdSUN

Я думаю, что это быстрее и понятнее, открывая CMDи печатая set, или PowerShellпечатая Get-Childitem env:.
paradroid

Если вы много редактируете переменную пути (например, при настройке новой системы), может быть полезно иметь ярлык для диалога «Свойства системы» на рабочем столе. Для этого щелкните правой кнопкой мыши на рабочем столе, выберите «Новый ярлык» и введите systempropertiesadvanced.exe. Затем вы можете нажать на ссылку, чтобы перейти в диалоговое окно «Свойства системы», а затем нажать «Переменные среды», чтобы перейти в диалоговое окно с настройками пути.
Брайан Бернс

Ответы:


334

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

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

Дорожка

Один из самых известных называется PATHв Windows, Linux и Mac OS X. Он определяет каталоги, в которых исполняемые программы * находятся на компьютере, которые можно запускать, не зная и не вводя полный путь к файлу в командной строке. , (Или в Windows, диалоговое окно « Выполнить » в меню «Пуск» или « WinR).

В 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

графический интерфейс пользователя

  1. Open Control Panel » System » Advanced » Environment Variables.

  2. Введите control sysdm.cpl,,3в диалоговом окне «Выполнить» ( Win+ R) и нажмите Environment Variables.
    Для редактирования пользовательских переменных вы также можете набрать

    %windir%\System32\rundll32.exe sysdm.cpl,EditEnvironmentVariables
    

    в диалоговом окне «Выполнить».

  3. Щелкните правой кнопкой мыши (Мой) компьютер и выберите Свойства или просто нажмите Win+ Break.

    • В XP нажмите на Advanced » Environment Variables.
    • В Vista + нажмите на Advanced system settings » Environment Variables.
  4. Есть много других способов добраться до того же места, например, введя «переменные среды» в меню «Пуск» / «Экран поиска» и т. Д.

Переменные среды в 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: Path Howto


10
На Windows Vista и более поздних версиях вы можете использовать SETXдля внесения постоянных изменений. У него немного другой синтаксис. SETXдолжен быть добавлен из Windows Server 2003 Resource Kitболее ранних версий NT.
парадроид

1
@paradroid Хорошо, не знал этого (не пользователь Windows). Эта тема вики сообщества, вы можете пойти дальше и просто отредактировать эту информацию.
Даниэль Бек

2
@JdeBP Заголовок раздела предназначался для указания того, как установить эти значения в пользовательском интерфейсе , который называется оболочкой в Windows, в отличие от следующего раздела, интерфейс командной строки . Я редактировал это еще до того, как увидел ваш комментарий 10 часов назад. Никто никогда не упоминал, что это относится только к Explorer.
Даниэль Бек

1
@JdeBP Ответ, на который вы ссылаетесь, на самом деле не применим, поскольку вы говорили об установке значений в реестре. Настройка через диалоговое окно будет транслировать то, что WM_SETTINGCHANGEя представляю, и поэтому уведомлять заинтересованные стороны о новых значениях. Вот почему я спросил, как это применимо здесь. Создание чего-то жирным шрифтом не меняет его значения и не облегчает его понимание, как повторение одного и того же предложения, только громче. Кроме того, я отредактировал этот пост несколько часов назад, чтобы особо упомянуть, что значения, которые получают процессы, устанавливаются при запуске.
Даниэль Бек

3
@JdeBP Вы также можете заметить, что вопрос довольно простой по своей природе. Тщательное объяснение тонкостей того, как распределяются изменения в переменных среды (серьезно, « WM_SETTINGCHANGEWindows API? Это не аудитория этого вопроса!»), Может оказаться не очень хорошей идеей, так как это может сбить читателя с толку, вместо того, чтобы объяснить, о чем эти переменные ,
Даниэль Бек

64

Этот пост с более технической точки зрения, чем у Дэниела, но не объясняет так много концепций.


Статья Википедии также является отличным referrence.

Linux и большинство BSD

В большинстве оболочек командной строки временные переменные среды устанавливаются с помощью команд export(sh, bash, zsh) или setenv(csh, tcsh).

  • Примеры предваряя , $HOME/binчтобы $PATHв ударе или 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переменная обрабатывается специально: и системные, и пользовательские настройки объединяются в окончательное значение.

    Изменения сохраняются в Реестре (см. Ниже) и мгновенно применяются ко всем новым процессам, созданным в Проводнике (графическая оболочка), например, через меню «Пуск».

  • Общесистемные переменные среды хранятся в реестре HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentи загружаются при загрузке системы.

    Пользовательская среда сохраняется HKCU\Environmentи загружается при входе пользователя.

  • По умолчанию система также ищет setкоманды в AUTOEXEC.NTфайле.

MS-DOS, 16-битная Windows, серия Windows 9x

  • В MS-DOS Prompt ( command.com) используйте set name=value, как в WinNT.

    Аналогичным образом, setинтерактивный запуск влияет только на этот command.comэкземпляр, а также на любые новые процессы, запущенные из него.

  • Чтобы внести постоянные изменения, добавьте или отредактируйте соответствующие setстроки C:\AUTOEXEC.BAT, затем перезагрузите компьютер.

    • Обходной путь, чтобы избежать перезапуска, для Windows 9x: откройте окно «Подсказка MS-DOS», установите соответствующие переменные, закройте существующий процесс Explorer (« Пуск» → «Выключить» → удерживая Ctrl + Shift, нажмите « Отмена» ), запустите explorer.exeиз окна «Подсказка MS-DOS». ,

VMS

(Не смог устоять.)

DCL не имеет понятия «путь», но могут быть введены различные определения символов и команд SYS$LOGIN:LOGIN.COM.


2
Раздел VMS неверен. DCL имеет DCL$PATHдля " автоматических внешних команд ".
JdeBP

9

Для глобальных (нетерминальных) переменных среды bashоболочки PATHя следую соглашению, используемому в моей установке Ubuntu VM - другие оболочки будут разными:

Оговорка: К выполнению запуска последовательности вся оболочка, которая .bashrc, .profileи т.д. файлы поставляются в каком порядке ?, когда я должен заново войти , чтобы получить видимость вновь определенных переменных, псевдонимы и т.д. ?, в чем разница между логином , интерактивная и неинтерактивная оболочка - я использую cron? и почему, когда я делаю, . ~/.bashrcмоя глупая PATHпеременная становится все длиннее и длиннее? ключевые вопросы, которые приходят на ум, когда я думаю о моей PATHпеременной.

На самом деле, я просто полностью переписал весь мой набор файлов запуска bash, взяв идеи из файлов скелетов Ubuntu и cygwin, и вот некоторые из моих сайтов:

  1. Экспортируйте PATHи другие глобальные переменные среды (т. Е. LD_LIBRARY_PATH) Переменные в .profile;
  2. Используйте логику в ~/.profileисточнике, $HOME/.bashrcесли он существует;
  3. Забор выполнения ~/.bashrcс тестом для интерактивного выполнения, выход в противном случае;
  4. Поместите все псевдонимы, shoptнастройку подсказок, управление историей, настройку терминала, определение функций и т. Д. (Интерактивную настройку) в той части, ~/.bashrcкоторая защищена, чтобы работать только в интерактивном режиме;
  5. Избавьтесь от других загрузочных файлов bash, потому что их наличие определяет, будет ли проход через элемент управления .profileи .bashrcработает ли он должным образом. То есть, если нет особых требований сделать иначе, удалите ~/.bash_profile& ~/.bash_login;
  6. Когда я нахожусь в приглашении bash, и мне нужно обновить некоторые настройки по умолчанию, я редактирую свой ~/.bashrcфайл, а затем просто отправляю его, . ~/.bashrcчтобы получить эти изменения в моей текущей оболочке.
  7. Когда я изменяю переменную окружения, например PATH, мне нужно изменить и получить исходный текст ~/.profile;
  8. Я помещаю свои вызовы в fink, port и brew в определенные настройки .profile.

Это мои 2 цента на эту тему.


7

Q: ЧТО ТАКОЕ переменные среды?

A: Переменные среды похожи на переменные в любом языке программирования. В случае систем Windows или Unix они хранят различные значения, чтобы позволить программам и задачам получать необходимую информацию об ОС или «среде». Например:

USERPROFILE: каталог пользователя в файлах ОС.

ПОЧТА: где можно найти почту пользователя в файлах ОС.

Q: ЧТО конкретно является переменной PATH?

A: Переменная PATH задает пути к каталогам, которые нужно искать при выполнении команд, как для команд RUN, так и для внутренних вызовов из программ. Это не позволяет программе знать свое место установки для вызова других исполняемых процессов.

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

Согласно этой статье в Википедии :

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


Q: КАК добавить местоположение в переменную PATH?

A: Вам необходимо отредактировать строку переменной переменной PATH Environment Variables, чтобы включить в нее местоположение вашего исполняемого файла.

Один из способов сделать это описан здесь :

  1. Откройте меню «Пуск» и щелкните правой кнопкой мыши на компьютере. Выберите Свойства.
  2. Выберите Расширенные настройки системы.
  3. На вкладке «Дополнительно» выберите «Переменные среды».
  4. Выберите РЕДАКТИРОВАТЬ или НОВЫЙ. (для PATH вы, скорее всего, хотите редактировать).
  5. Добавьте путь к вашему местоположению. например:C:\wamp\bin\php\php5.5.12;

Я надеюсь, что это проясняет некоторые из путаницы.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.