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

Вопросы о

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

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

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

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

313 голосов | спросил slhck 16 Maypm11 2011, 22:25:57

4 ответа


307

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

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

Путь

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

В Linux и Mac OS X обычно хранятся все каталоги bin и sbin, релевантные для текущего пользователя. В Windows он содержит, по крайней мере, директории C: \ Windows и C: \ Windows \ system32 - вот почему вы можете запустить < code> calc.exe или notepad.exe из командной строки или Запустить , но не firefox.exe. (Firefox находится в C: \ Program Files \ Mozilla Firefox. Для получения информации о том, как включить Firefox, перейдите здесь )

Например, введите calc (.exe can ) в командной строке Windows запустится калькулятор Windows.

* Вы можете добавить поддержку расширений файлов, отличных от .exe, отредактировав % PATHEXT% .

Другие

Другие переменные могут указывать программам, какой терминал используется (TERM в Linux /Mac OS X) или в Windows, где находится папка Windows (например, % WINDIR % - C: \ Windows).

Создание новых переменных среды

В Windows, Linux и Unix можно создавать новые переменные среды, значения которых затем становятся доступными для всех программ при запуске.

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

A

Окна

GUI

  1. Откройте Панель управления Â »Система« Расширенные »переменные среды.

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

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

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

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

    • В XP нажмите Advanced> «Переменные среды».
    • В Vista + щелкните по Дополнительные системные настройки Â »Переменные среды.
  4. Есть много других способов достижения одного и того же места, например, путем ввода «переменных среды» в поле «Пуск» /«Поиск экрана» и т. д.

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

Существует также Rapid Environment Editor , который помогает устанавливать и изменять переменные среды в Windows без необходимости углубляться в настройки системы. Еще одна программа с открытым исходным кодом для Windows, с которой среда редактирования путей может быть отредактирована очень удобно, - Редактор путей .

Командная строка

Формат

Переменные среды в Windows обозначаются символами процента (%), окружающими имя:

имя%%

эхо

Чтобы отобразить значение переменной среды в cmd.exe, введите echo% name%.

C: \> echo% USERPROFILE%
C: \ Users \ Daniel

набор

Чтобы создать /установить переменную, используйте set varname = value:

C: \> set FunnyCatPictures = C: \ Users \ Daniel \ Pictures \ Funny Cat Pictures

C: \> FunnyCatPicturesTwo =% USERPROFILE% \ Pictures \ Funny Cat Pictures 2

Чтобы добавить /добавить переменную, используйте set varname = value;% varname%:

C: \> set Пингвины = C: \ Linux

C: \> Set Пингвины = C: \ Windows;% Пингвины%

C: \> эхо% Пингвины%
C: \ Windows, C: \ Linux

Переменные окружения, установленные таким образом, доступны для (остальныеиз) продолжительность процесса командной строки, в котором они установлены, и доступны для процессов, которые запускаются после того, как были установлены переменные.

Setx

Чтобы создать /установить переменную постоянно , используйте setx varname "значение":

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, они не чувствительны к регистру.

A

Производные 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
export var = value

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

См. проект документации Linux, Path HOWTO для более подробного обсуждения этой темы.

Возможно, вопреки общему мнению, OS X больше «Unix», чем Linux. В дополнение к уже упомянутым файлам в этих файлах можно изменить $ PATH:

  • /etc /paths содержит все каталоги по умолчанию, добавленные в путь, например /bin и /usr /sbin.
  • Любой файл в /etc/paths.d, который обычно используется установщиками, чтобы сделать исполняемые файлы, которые они предоставляют, доступными из оболочки, не касаясь файлов конфигурации всей системы или пользователя. Эти файлы просто содержат один путь в строке. например, /Программы /Mozilla /Календарь /bin.

A

Внешние ссылки:

  

Переменные среды в XP
Windows XP Service Pack 2 Инструменты поддержки (Включает setx)
Переменные среды в Windows Vista и Windows 7
Добавление исполняемых файлов в диалоговое окно запуска
Советы Mac OSX - настройка среды Переменные
TLDP: путь к использованию

ответил Daniel Beck 16 Maypm11 2011, 22:44:52
61

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


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

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) 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 и любые запущенные из него новые процессы.

  • Чтобы сделать постоянные изменения, используйте Панель управления â † 'System â †' Advanced â † 'Переменные среды . ( docs )

    Примечание. В то время как пользовательские настройки обычно переопределяют системные, переменная 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, установите подходящие переменные, закройте существующий процесс проводника ( Пуск â † 'Выключить â †', удерживая Ctrl + Shift, нажмите Отмена ), запустите explorer.exe из окна MS-DOS Prompt.

VMS

(Не удалось устоять.)

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

ответил grawity 16 Maypm11 2011, 23:03:17
8

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

Caveat: вся последовательность запуска оболочки, в которой .bashrc, .profile и т. д. файлы находятся в каком порядке ?, когда мне нужно повторно -login, чтобы получить видимость для вновь определенных переменных, псевдонимов и т. д., в чем разница между логиной, интерактивной и неинтерактивной оболочкой - я использую 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. Я поместил свои звонки в fink, port и заварил конкретные настройки в .profile.

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

ответил Billy McCloskey 15 Jpm1000000pmWed, 15 Jan 2014 21:49:57 +040014 2014, 21:49:57
6

Q: ЧТО являются переменными среды?

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

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

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

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

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

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

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


Q: КАК добавить местоположение к переменной 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;

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

ответил user945389 25 J000000Friday14 2014, 13:57:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132