Что такое 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

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

  1. открытоControl Panel » System » Advanced » Environment Variables,

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

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

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

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

    • В 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: Путь 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 since PATH 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 page bash(1) section Invocation.

        Often, the user's profile file includes an explicit call for ~/.bashrc тоже.

      • zsh: Manual page zsh(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.

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, чтобы включить в нее местоположение вашего исполняемого файла.

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

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

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

Для 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 's, настройка подсказок, управление историей, настройка терминала, определение функций и т. д. (интерактивная настройка) в части ~/.bashrc защищенный для запуска только в интерактивном режиме;
  5. Избавьтесь от других файлов запуска bash, потому что их существование определяет, будет ли путь управления через .profile а также .bashrc работает как положено. То есть, если нет особых требований сделать иначе, удалите ~/.bash_profile & ~/.bash_login ;
  6. Когда я нахожусь в приглашении bash, и мне нужно обновить некоторые настройки по умолчанию, я редактирую ~/.bashrc файл, а затем просто отправьте его с . ~/.bashrc чтобы получить эти изменения в моей текущей оболочке.
  7. Когда я делаю изменения в переменную окружения, как PATH Мне нужно изменить и источник моего ~/.profile ;
  8. Я помещаю свои вызовы в fink, port и brew в .profile ,

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

Windows 10, без учетной записи администратора

Панель управления -> Учетные записи пользователей -> Учетные записи пользователей -> Изменить переменные среды.

Обратите внимание, что вам нужно нажать на заголовок «Учетные записи пользователей» :

Опять же, вам нужно нажать на заголовок «Учетные записи пользователей» :

Другие вопросы по тегам