2011-05-16 18:25:57 +0000 2011-05-16 18:25:57 +0000
347
347

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

Вопросы о

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

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

Так что вопрос в следующем: **Какие переменные окружения, например, исполняемый файл PATH, и как их можно изменить и использовать на основных операционных системах?

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

Ответы (5)

337
337
337
2011-05-16 18:44:52 +0000

Что такое переменные окружения?

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

Путь

Одна из самых известных переменных называется PATH в Windows, Linux и Mac OS X. Она определяет каталоги, в которых находится исполняемый файл programs* на машине, которую можно запустить, не зная и не набирая весь путь к файлу в командной строке. (Или в Windows, в диалоге Run в меню “Пуск” или

+R).

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

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

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

Other

Другие переменные могут подсказать программам, какой терминал используется (TERM в Linux/Mac OS X), или, в Windows, где находится папка Windows (например, %WINDIR% в Linux/Mac OS X), или, в Windows, где находится папка Windows (например, C:\Windows can будет опущена), Control Panel » System » Advanced » Environment Variables это control sysdm.cpl,,3).

Создание новых переменных окружения

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

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

 

Windows

GUI

  1. Открыть Environment Variables.

  2. Введите cmd.exe в диалоге запуска (

    +R) и нажмите echo %name%. Для редактирования пользовательских переменных вы также можете ввести

  3. Щелкните правой кнопкой мыши (My) Computer (Мой) и выберите Properties (Свойства), или просто нажмите

    +Break (Разрыв).

  4. Есть много других способов достичь того же места, например, ввести “переменные окружения” в поисковом окне “Пусковое меню/Экран” и т.д.

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

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

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

Формат

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

%name%

echo

Для отображения значения переменной окружения в set varname=value, введите set varname=value;%varname%.

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

устанавливает

To create/set a variable, use setx varname "value":

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

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

To append/add a variable, use set:

C:\>set Penguins=C:\Linux

C:\>set Penguins=C:\Windows;%Penguins%

C:\>echo %Penguins%
C:\Windows;C:\Linux

Environment variables set in this way is available for (the rest of) the duration of the Command Prompt process that they are set, and are available to processes that is launched after the variables were set.

setx

To create/set a variable permanently , используйте %PATH%:

C:\>setx FunnyCatPictures "C:\Users\Daniel\Pictures\Funny Cat Pictures"

[Restart CMD]

C:\>echo %FunnyCatPictures%
C:\Users\Daniel\Pictures\Funny Cat Pictures

В отличие от C:\Program Files, нет знака равенства и значение должно быть заключено в кавычки, если оно содержит пробелы. Обратите внимание, что переменные могут расширяться до строки с пробелами (например, setx становится %WINDIR%), поэтому лучше заключать кавычки вокруг значений, которые содержат любые переменные.

Вы должны вручную добавить %SystemRoot% в версии Windows раньше, чем Vista. Инструменты поддержки Windows XP Service Pack 2

Список переменных окружения Windows

Здесь представляет собой список переменных окружения по умолчанию , которые встроены в Windows. Некоторые примеры:%USERPROFILE%, %APPDATA%, /etc и /etc/profile. Как и большинство имен в Windows, они не чувствительны к регистру.

 

Unix-деривативы (FreeBSD, GNU / Linux, OS X)

Переменные окружения в Linux префиксованы знаком доллара ($), например $HOME или $HOSTNAME. Многие известные и стандартные переменные пишутся заглавными буквами в знак этого. Помните, что имена переменных чувствительны к регистру, что означает, что $User и $USER совершенно не связаны с оболочкой.

производные Unix определяют переменные системного масштаба в скриптах оболочки, расположенных в основном в папке $HOME/.bash_profile, но пользовательские значения могут быть заданы этим переменным в скриптах, расположенных в домашней папке (например, .profile, export). Файл env в домашней папке является общим местом для определения пользовательских переменных.

Установка переменные

Эти файлы являются обычными командными сценариями и могут содержать не только объявления переменных окружения. Для установки переменной окружения используйте export. Чтобы показать переменные окружения, определенные в данный момент, в терминале, выполните setenv.

Команда /etc/paths является стандартным способом определения переменных. Синтаксис очень интуитивен. Результат идентичен для этих двух строк, но первая альтернатива предпочтительнее в случае необходимости переноса в pre-POSIX оболочку Bourne.

var=value; export var
export var=value

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

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

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

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

 

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

Переменные окружения в XP Поддержка Windows XP Service Pack 2 (Включает &007) Переменные окружения в Windows Vista и Windows 7 Добавление исполняемых файлов в диалоговое окно запуска Советы по Mac OSX - Настройка переменных окружения [ TLDP: Path Howto ]‘(http://www.tldp.org/HOWTO/Path.html)

64
64
64
2011-05-16 19:03:17 +0000

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

  • *

Статья в Википедии ](http://en.wikipedia.org/wiki/Environment_variable) также является отличной ссылкой.

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

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

  • Примеры предисловия $HOME/bin к $PATH в bash или zsh:

  • csh, tcsh:

Постоянные переменные окружения могут устанавливаться на нескольких отдельных этапах:

  • Логин:

  • Открытие терминального окна:

серии Windows NT

  • В командной строке (cmd.exe), используйте set name=value для изменения переменных окружения для этого окна.

  • Для постоянных изменений используйте Панель управления → Система → Дополнительно → Переменные окружения. docs )

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

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

MS-DOS, 16-разрядная Windows, Windows 9x серии

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

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

VMS

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

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

9
9
9
2014-01-15 17:49:57 +0000

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

Caveat: Вся последовательность запуска оболочки, какие .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, портирую и завариваю определенные настройки в .profile.

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

8
8
8
2014-07-25 09:57:28 +0000

Q: Что такое переменные окружения ?

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

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

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

Q: Что конкретно представляет собой переменная PATH?

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

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

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

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


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

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

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

  1. Откройте меню “Пуск” и щелкните правой кнопкой мыши на Компьютере. Выберите Свойства.
  2. Выберите Дополнительные системные настройки.
  3. На вкладке Дополнительно выберите Переменные окружения.
  4. Выберите EDIT или NEW. (для PATH вы, скорее всего, захотите EDIT).
  5. Добавьте путь к вашему местоположению, например: C:\wamp\bin\php\php5.5.12;

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

0
0
0
2020-02-26 10:20:48 +0000

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

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

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

Снова нужно нажать на заголовок “Учетные записи пользователей ” :

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

10
7
19
21
8