Вопросы о
- установка переменных среды
-
PATH
здесь очень распространены, и в большинстве случаев ответы очень похожи друг на друга. В будущем было бы неплохо иметь хороший Q / A для этого.
Поэтому возникает вопрос: что такое переменные среды, например, исполняемый файл PATH
, и как я могу их изменить и использовать в основных операционных системах?
Хороший ответ будет включать в себя простое объяснение того, что переменные среды и особенно PATH
значат для ОС, а также простые рекомендации о том, как их устанавливать и читать соответственно.
env
и необходимые параметры перечислены.CMD
и печатаяset
, илиPowerShell
печатаяGet-Childitem env:
.Ответы:
Что такое переменные среды?
Переменные среды содержат значения, связанные с текущей средой, такой как операционная система или пользовательские сеансы.
Дорожка
Один из самых известных называется
PATH
в Windows, Linux и Mac OS X. Он определяет каталоги, в которых исполняемые программы * находятся на компьютере, которые можно запускать, не зная и не вводя полный путь к файлу в командной строке. , (Или в Windows, диалоговое окно « Выполнить » в меню «Пуск» или « +» R).В 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
графический интерфейс пользователя
Open
Control Panel » System » Advanced » Environment Variables
.Введите
control sysdm.cpl,,3
в диалоговом окне «Выполнить» ( + R) и нажмитеEnvironment Variables
.Для редактирования пользовательских переменных вы также можете набрать
в диалоговом окне «Выполнить».
Щелкните правой кнопкой мыши (Мой) компьютер и выберите Свойства или просто нажмите + Break.
Advanced » Environment Variables
.Advanced system settings » Environment Variables
.Есть много других способов добраться до того же места, например, введя «переменные среды» в меню «Пуск» / «Экран поиска» и т. Д.
Переменные среды в Windows разделяются на значения, специфичные для пользователя и компьютера / системы. Вы можете просматривать и редактировать их значения там. Их текущие значения при запуске становятся доступными для всех программ.
Существует также Rapid Environment Editor , который помогает устанавливать и изменять переменные среды в Windows без необходимости углубляться в системные настройки. Еще одна программа с открытым исходным кодом для Windows, с помощью которой можно легко редактировать среду пути, - это редактор путей .
Командная строка
Формат
Переменные среды в Windows обозначены символом процента (%), окружающим имя:
эхо
Чтобы отобразить значение переменной среды
cmd.exe
, введитеecho %name%
.установлен
Чтобы создать / установить переменную, используйте
set varname=value
:Чтобы добавить / добавить переменную, используйте
set varname=value;%varname%
:Переменные среды, установленные таким образом, доступны в течение (остальной части) процесса командной строки, в котором они установлены, и доступны процессам, которые запускаются после того, как переменные были установлены.
Setx
Чтобы создать / установить переменную постоянно , используйте
setx varname "value"
:В отличие от этого
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.Оболочка C и ее потомки используют совершенно другой синтаксис; там команда есть
setenv
.Посмотрите проект документации Linux, Path HOWTO для более подробного обсуждения этой темы.
Возможно, вопреки распространенному мнению, OS X является более "Unix", чем Linux. В дополнение к уже упомянутым файлам $ PATH можно изменить в этих файлах:
/etc/paths
содержит все каталоги по умолчанию, которые добавляются к пути, как/bin
и/usr/sbin
./etc/paths.d
обычно используется установщиками, чтобы сделать исполняемые файлы, которые они предоставляют, доступными из оболочки, не затрагивая общесистемные или пользовательские файлы конфигурации. Эти файлы просто содержат один путь на строку. Например, / Программы / Mozilla / Календарь / bin.Внешняя ссылка:
источник
SETX
для внесения постоянных изменений. У него немного другой синтаксис.SETX
должен быть добавлен изWindows Server 2003 Resource Kit
более ранних версийNT
.WM_SETTINGCHANGE
я представляю, и поэтому уведомлять заинтересованные стороны о новых значениях. Вот почему я спросил, как это применимо здесь. Создание чего-то жирным шрифтом не меняет его значения и не облегчает его понимание, как повторение одного и того же предложения, только громче. Кроме того, я отредактировал этот пост несколько часов назад, чтобы особо упомянуть, что значения, которые получают процессы, устанавливаются при запуске.WM_SETTINGCHANGE
Windows API? Это не аудитория этого вопроса!»), Может оказаться не очень хорошей идеей, так как это может сбить читателя с толку, вместо того, чтобы объяснить, о чем эти переменные ,Этот пост с более технической точки зрения, чем у Дэниела, но не объясняет так много концепций.
Статья Википедии также является отличным referrence.
Linux и большинство BSD
В большинстве оболочек командной строки временные переменные среды устанавливаются с помощью команд
export
(sh, bash, zsh) илиsetenv
(csh, tcsh).Примеры предваряя ,
$HOME/bin
чтобы$PATH
в ударе или Zsh:(В данном конкретном случае
export
это не нужно, посколькуPATH
уже является частью среды.)csh, tcsh:
Постоянные переменные среды могут быть установлены в течение нескольких отдельных этапов:
Авторизоваться:
Настройка сеанса входа: 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%
используйте:Это влияет только на этот
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
, затем перезагрузите компьютер.explorer.exe
из окна «Подсказка MS-DOS». ,VMS
(Не смог устоять.)
DCL не имеет понятия «путь», но могут быть введены различные определения символов и команд
SYS$LOGIN:LOGIN.COM
.источник
DCL$PATH
для " автоматических внешних команд ".Для глобальных (нетерминальных) переменных среды
bash
оболочкиPATH
я следую соглашению, используемому в моей установке Ubuntu VM - другие оболочки будут разными:Оговорка: К выполнению запуска последовательности вся оболочка, которая
.bashrc
,.profile
и т.д. файлы поставляются в каком порядке ?, когда я должен заново войти , чтобы получить видимость вновь определенных переменных, псевдонимы и т.д. ?, в чем разница между логином , интерактивная и неинтерактивная оболочка - я используюcron
? и почему, когда я делаю,. ~/.bashrc
моя глупаяPATH
переменная становится все длиннее и длиннее? ключевые вопросы, которые приходят на ум, когда я думаю о моейPATH
переменной.На самом деле, я просто полностью переписал весь мой набор файлов запуска bash, взяв идеи из файлов скелетов Ubuntu и cygwin, и вот некоторые из моих сайтов:
PATH
и другие глобальные переменные среды (т. Е.LD_LIBRARY_PATH
) Переменные в.profile
;~/.profile
источнике,$HOME/.bashrc
если он существует;~/.bashrc
с тестом для интерактивного выполнения, выход в противном случае;shopt
настройку подсказок, управление историей, настройку терминала, определение функций и т. Д. (Интерактивную настройку) в той части,~/.bashrc
которая защищена, чтобы работать только в интерактивном режиме;.profile
и.bashrc
работает ли он должным образом. То есть, если нет особых требований сделать иначе, удалите~/.bash_profile
&~/.bash_login
;~/.bashrc
файл, а затем просто отправляю его,. ~/.bashrc
чтобы получить эти изменения в моей текущей оболочке.PATH
, мне нужно изменить и получить исходный текст~/.profile
;.profile
.Это мои 2 цента на эту тему.
источник
Q: ЧТО ТАКОЕ переменные среды?
A: Переменные среды похожи на переменные в любом языке программирования. В случае систем Windows или Unix они хранят различные значения, чтобы позволить программам и задачам получать необходимую информацию об ОС или «среде». Например:
USERPROFILE: каталог пользователя в файлах ОС.
ПОЧТА: где можно найти почту пользователя в файлах ОС.
Q: ЧТО конкретно является переменной PATH?
A: Переменная PATH задает пути к каталогам, которые нужно искать при выполнении команд, как для команд RUN, так и для внутренних вызовов из программ. Это не позволяет программе знать свое место установки для вызова других исполняемых процессов.
Он просматривает переменную PATH системы Windows Environment и проверяет каждое местоположение на наличие указанного исполняемого файла. Таким образом, добавление местоположения в переменную PATH позволяет напрямую вызывать исполняемый файл.
Согласно этой статье в Википедии :
Q: КАК добавить местоположение в переменную PATH?
A: Вам необходимо отредактировать строку переменной переменной PATH Environment Variables, чтобы включить в нее местоположение вашего исполняемого файла.
Один из способов сделать это описан здесь :
C:\wamp\bin\php\php5.5.12;
Я надеюсь, что это проясняет некоторые из путаницы.
источник