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


Вопросы о

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

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

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

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


314
2018-05-16 18:25


Источник


Устали от необходимости делать это вручную каждый раз, когда мне это нужно, я написал некоторые записи в реестре, чтобы добавлять записи контекстного меню для AddToPath и RemoveFromPath в папки, используя бесплатное приложение с именем pathed.exe. Ниже приведена ссылка на полное руководство: addictivetips.com/windows-tips/... Теперь я могу легко добавлять папки в переменную PATH или удалять их из нее, без необходимости редактировать какой-либо файл или беспокоиться о том, чтобы испортить форматирование переменной. Надеюсь, поможет. знак равно - Haroon Q. Raja
В Windows есть ярлык для открытия свойств System ie. Панель управления -> Система Это клавиша WIN на клавиатуре + Pause / Break (WIN + Break). Это чрезвычайно полезно и ускоряет процесс установки новых переменных среды на Win8, потому что вам нужно щелкнуть по нескольким окнам в современном ui (Да, если это современно, тогда я вырасту кактус на моей ладони), что просто раздражает. Конечно, вы можете создать скрипт powershell или использовать команду setx и больше не волноваться об этом: D - termil0r
В Windows 8 самая быстрая навигация к изменяющимся системным и пользовательским переменным окружения использует поиск. <kbd> Win </ kbd> + <kbd> W </ kbd> вызывает поиск всех настроек. Искать envи перечислены необходимые параметры. - FRIdSUN
Я думаю, что это быстрее и яснее, открывая CMD и ввод текста set, или PowerShell и ввод текста Get-Childitem env:, - paradroid
Если вы много изменяете переменную пути (например, при настройке новой системы), это может помочь получить ярлык в диалоговом окне «Свойства системы» на рабочем столе. Для этого щелкните правой кнопкой мыши на рабочем столе, выберите «Создать ярлык» и введите systempropertiesadvanced.exe. Затем вы можете щелкнуть по ссылке, чтобы перейти в диалоговое окно «Свойства системы», затем щелкните «Переменные среды», чтобы перейти в диалог с настройками пути. - Brian Burns


Ответы:


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

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

Дорожка

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

В 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. открыто Control Panel » System » Advanced » Environment Variables,

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

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

    в диалоговом окне «Запуск».

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

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

Переменные среды в Windows разделяются на пользовательские и машинные / системные значения. Вы можете просматривать и редактировать их значения там. Их текущие значения при запуске становятся доступными для всех программ.

Есть также Быстрый редактор среды, который помогает устанавливать и изменять переменные среды в 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

Список переменных среды 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 команда является стандартным способом определения переменных. Синтаксис очень интуитивно понятен. Результат идентичен для этих двух линий, но первая альтернатива предпочтительна в случае необходимости переносимости оболочки pre-POSIX Bourne.

var=value; export var
export var=value

С оболочка C и ее потомки используют совершенно другой синтаксис; там, команда setenv,

См. Проект документации Linux, Путь 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


307
2018-05-16 18:44



В Windows Vista вы можете использовать SETX для внесения постоянных изменений. Он имеет несколько иной синтаксис. SETX должен быть добавлен из Windows Server 2003 Resource Kit для более ранних версий NT, - paradroid
@paradroid Приятно, не знал этого (не пользователь Windows). Эта тема является вики-сообществом, вы можете продолжать и просто редактировать эту информацию. - Daniel Beck♦
@JdeBP Название раздела предназначалось для ссылки как установить эти значения в пользовательском интерфейсе, который называется оболочка в Windows, в отличие от следующего раздела, Интерфейс командной строки, Я отредактировал это, прежде чем я увидел ваш комментарий 10 часов назад. Никто никогда не упоминал, что это применимо только к Проводнику. - Daniel Beck♦
@JdeBP В этом случае ответ, который вы связали, на самом деле не применяется, поскольку вы говорили о настройке значений в реестре. Настройка через диалог будет транслировать это WM_SETTINGCHANGE Я думаю, и поэтому уведомляю заинтересованных сторон о новых ценностях. Вот почему я спросил, как это применимо здесь. Создание чего-то жирного шрифта не меняет его смысла, и не облегчает его понимание, как повторение одного и того же предложения, только громче. Кроме того, я отредактировал это сообщение несколько часов назад, чтобы конкретно упомянуть, что значения, получаемые процессами, устанавливаются при их запуске. - Daniel Beck♦
@JdeBP Вы могли бы также заметить, что вопрос носит скорее базовый характер. Тщательно объясняя тонкости распространения изменений в переменных среды (серьезно, WM_SETTINGCHANGE? Windows API? Это не аудитория этого вопроса!) Не может быть хорошей идеей, так как это может смутить читателя, а не объяснять, что это за переменные. - Daniel Beck♦


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


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

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

    • Вход в терминал: файлы профиля «shell».

      • bash использования /etc/profile и первый из: ~/.bash_profile, ~/.bash_login, ~/.profile, Ручная страница bash(1) раздел мольба,

        Часто файл профиля пользователя включает явный вызов для ~/.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 series

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

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

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

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

VMS

(Не мог сопротивляться.)

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


61
2018-05-16 19:03



Раздел VMS ошибочен. DCL имеет DCL$PATH для "автоматические зарубежные команды». - JdeBP
@grawity. Что вы подразумеваете под «vms не могли устоять ...»? - Pacerier


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

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

На самом деле, я просто полностью переписал весь набор файлов bash startup, берущий идеи из файлов скелета 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. Я поставил свои звонки, чтобы пообщаться, портировать и заварить конкретные установки в .profile,

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


8
2018-01-15 17:49





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

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

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

MAIL: где пользовательская почта может быть найдена в файлах ОС.

В: ЧТО это переменная PATH?

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

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

«Когда команда вводится в командную оболочку или системный вызов выполняется программой для выполнения программы, система сначала ищет текущий рабочий каталог, а затем ищет путь, просматривая каждый каталог слева направо» - http://en.wikipedia.org/wiki/PATH_(variable)


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

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

Один из способов сделать это From (https://kb.wisc.edu/cae/page.php?id=24500) 1. Откройте меню «Пуск» и щелкните правой кнопкой мыши «Компьютер». Выберите «Свойства». 2. Выберите Дополнительные параметры системы. 3. На вкладке «Дополнительно» выберите «Переменные среды». 4. Выберите EDIT или NEW. (для PATH вы, скорее всего, хотите изменить). 5. Добавьте свой путь к местоположению. например: C: \ wamp \ bin \ php \ php5.5.12;

Надеюсь, это объяснит некоторую путаницу. Редактирование и комментарии приветствуются.


6
2017-07-25 09:57