Почему Windows не может обрабатывать переменную окружения в Path? Path переменная среды
windows - Как избежать чрезмерного заполнения переменной среды PATH в Windows?
Один из способов, которым я могу думать, - использовать другие переменные среды для хранения частичных путей; например, если у вас
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir1; C:\this_is_a\long_path\that_appears\in_multiple_places\subdir2;то вы можете создать новую переменную среды, например
SET P1=C:\this_is_a\long_path\that_appears\in_multiple_placesпосле чего ваши исходные пути станут
%P1%\subdir1; %P1%\subdir2;EDIT: Другой вариант - создать каталог bin, содержащий файлы .bat, которые указывают на соответствующие файлы .exe.
EDIT 2: Комментарий Ben Voigt к другому ответу упоминает, что использование других переменных среды, как было предложено, может не уменьшить длину %PATH%, потому что они будут расширены до их сохранения. Это может быть правдой, и я не проверял ее. Другим вариантом является использование форм 8dot3 для более длинных имен каталогов, например C:\Program Files обычно эквивалентно C:\PROGRA~1. Вы можете использовать dir /x для просмотра более коротких имен.
РЕДАКТИРОВАТЬ 3: Этот простой тест заставляет меня поверить, что Бен Фойгт прав.
set test1=hello set test2=%test1%hello set test1=bye echo %test2%В конце этого вы увидите вывод hellohello, а не byehello.
РЕДАКТИРОВАТЬ 4: Если вы решили использовать пакетные файлы для устранения определенных путей из %PATH%, вы можете быть обеспокоены тем, как передать аргументы из вашего пакетного файла в ваш исполняемый файл, чтобы процесс прозрачен (т.е. вы не заметите разницы между вызовом командного файла и вызовом исполняемого файла). У меня нет большого опыта написания пакетных файлов, но это, похоже, работает нормально.
@echo off rem This batch file points to an executable of the same name rem that is located in another directory. Specify the directory rem here: set actualdir=c:\this_is\an_example_path rem You do not need to change anything that follows. set actualfile=%0 set args=%1 :beginloop if "%1" == "" goto endloop shift set args=%args% %1 goto beginloop :endloop %actualdir%\%actualfile% %args%с
echo %actualdir%\%actualfile% %args%В идеале вы должны точно знать, что делает каждая строка, прежде чем запускать ее.
qaru.site
Почему Windows не может обрабатывать переменную окружения в Path? Bilee
Существует определенная проблема с расширением переменных среды в переменной PATH, когда переменная расширяется до пути, который содержит пробелы.
Мы создали собственные переменные уровня системы, такие как «OUR_ROOT = c: \ MyRoot», а затем использовали его в системной PATH, например «PATH =;% OUR_ROOT% \ bin;» И он правильно расширяется до «PATH =; c: \ MyRoot \ bin;». Пока не проблема.
Но в Windows 7 (32-разрядная версия) у меня была сама установка продукта и создание переменных системной среды:
И он добавил его в переменную системы PATH:
PATH=<other path elements>;%STUDIO_BIN%;<more path elements>Но значения PATH, показанные в CMD, содержат «% STUDIO_BIN%;» А не расширенный путь. Значение в «Мой компьютер»> «Свойства»> «Дополнительно»> «Env.Vars» также оставалось неизменным. Это означало, что я не мог запускать программы, требующие DLL в этом каталоге.
Просто изменив STUDIO_BIN (через My Computer> Properties> Advanced …> Env Vars) на имя без встроенных пространств:
STUDIO_BIN=C:\ProductName\binА затем перезапустив окно CMD, теперь PATH:
PATH=<other path elements>;C:\ProductName\bin;<more path elements>Еще одно решение – достаточно отредактировать системную переменную, которую вы используете в PATH, с помощью диалогового окна «Мой компьютер> Свойства> Дополнительно …> Переменные среды». Я попытался добавить символ и удалить его, чтобы сделать «изменение», а затем «ОК», запустить новую подсказку CMD, а PATH НЕ был правильно расширен. Затем я попытался удалить часть пути, чтобы
(Опуская «Название продукта 10.4») и вот, и следующее следующее приглашение CMD показало, что PATH с STUDIO_BIN правильно расширен!
Как ни странно, если я вернусь и добавлю «Product Name 10.4» в STUDIO_BIN (включая все пространства, которые были там раньше, прежде чем я начал обманывать его), и PATH был STILL правильно расширен.
Очевидно, что с достаточным изменением его содержимого переменная PATH подвергается некоторой дополнительной обработке в диалоговом окне «Переменные среды», которая позволяет ей работать. Обработка, которая не выполняется, когда переменная была добавлена установщиком продукта (который, вероятно, только что изменил PATH в реестре напрямую).
Я почти уверен, что это проблема с XP. Это просто появилось для меня в Windows 7, когда я собирал новую машину разработки. По-видимому, Microsoft не исправила его.
Очевидно, что даже MS определенные переменные, такие как% ProgramFiles%, не будут корректно расширяться в PATH.
Эта страница дает возможный ответ, если вы устанавливаете PATH через командную строку или командный файл. (Включите всю команду после SET в кавычках.) Я не знаю, какой установщик я установил для установки переменных среды, но, очевидно, обошел любую обработку, необходимую для правильного расширения путей с пробелами.
Итак, подведем итоги: вы можете:
-
Изменить пути (и переместить все связанные файлы) на пути без пробелов или
-
Отредактируйте переменные, которые не могут расширяться в диалоговом окне «Переменные среды» (их достаточно изменить, чтобы заставить их обрабатывать правильно – я не уверен, сколько их достаточно).
www.bilee.com
Какова переменная среды PATH и как ее добавить? Ubuntu Linux
Частичный дубликат: как добавить каталог в PATH?
PATH – переменная окружения. Он в основном говорит вашей машине, где искать программы, поэтому, когда вы запускаете программу picc, вы можете просто сделать это:
piccвместо
/usr/hitech/picc/9.82/bin/piccЧтобы добавить каталог в ваш $PATH , выполните один из следующих вариантов.
Способ 1
Изменить ~/.profile :
gedit ~/.profileнайдите следующую строку:
PATH="$HOME/bin:$PATH"Способ 2
Выполните следующую команду в терминале:
export PATH=$PATH:/usr/hitech/picc/9.82/binПеременные среды Shell используются для нескольких целей: хранения данных, сохранения конфигураций программного обеспечения, установки параметров терминала и изменения среды оболочки. Переменные среды обычно устанавливаются во время загрузки или по разному программному обеспечению. Один из способов настройки переменных окружения – из командной строки.
Список всех переменных на терминале
envэто напечатает всю переменную, которая у вас есть.
Показывать одну переменную за раз
Количество этих переменных может стать очень длинным списком, и определение одной конкретной переменной может стать непростой задачей. К счастью, Linux позволяет нам отображать значение одной переменной оболочки с помощью команды echo вместе с именем переменной. Это делает задачу очень простой. Пример: echo "$HOME"
Добавить или изменить переменную
Чтобы добавить или изменить переменную среды, мы можем использовать команду export, за которой следует имя переменной и значения, которые идут с ней.
Обратите внимание, однако, что это будет работать только для текущего сеанса оболочки. Он не будет доступен ни в одном другом терминале.
ubuntu.fliplinux.com
Справка по переменным среды Windows.
Для управления переменными среды Windows используется команда SET. Данная справка выводится как обычно:C:\WINDOWS\system32>set /?Полезные статьи по данной теме:Синтаксис BAT-файлов и командная строка в MS-DOSУрок bat-аникиПеременные среды
Вывод, задание и удаление переменных среды cmd.exe.
SET [переменная=[строка]]
переменная Имя переменной среды. строка Строка символов, присваиваемая указанной переменной.
Введите SET без параметров для вывода текущих переменных среды.
Изменение команды SET при включении расширенной обработки команд:
Если при вызове указать только имя переменной без знака равенства и значения,команда SET выведет значения всех переменных, имя которых начинаетсяс указанной строки. Например:
SET P
Эта команда выведет значения всех переменных, имена которых начинаются с 'P'.
Если имя переменной не найдено в текущей среде, при возврате команда SETустановит значение ошибки ERRORLEVEL 1.
Команда SET не допускает использование знака равенства в именипеременной среды.
Команда SET поддерживает два дополнительных ключа:
SET /A выражение SET /P variable=[promptString]
Ключ /A указывает, что строка справа от знака равенства является числовымвыражением, значение которого вычисляется. Обработчик выражений оченьпрост и поддерживает следующие операции, перечисленные в порядке убыванияприоритета:
( ) | группировка |
! ~ - | унарные операторы |
* / % | арифметические операторы |
+ - | арифметические операторы |
<< >> | двоичный сдвиг |
& | двоичное И |
^ | двоичное исключающее ИЛИ |
| | двоичное ИЛИ |
= *= /= %= += -=&= ^= |= <<= >>= | присвоение |
, | разделитель операторов |
Ключ /P позволяет установить значение переменной для входной строки, введеннойпользователем. Показывает указанное приглашение promptString перед чтениемвведенной строки. Приглашение promptString может быть пустым.
Подстановка переменной среды может быть расширена следующим образом:
%PATH:str1=str2%
расширит действие переменной среды PATH, заменяя каждое вхождение "str1" врасширенном результате на "str2". "str2" может быть пустой строкой дляэффективного удаления вхождений "str1" из расширенного вывода. "str1" можетначинаться со звездочки, и в этом случае это будет соответствовать любомуначалу расширенного вывода до первого вхождения оставшейся части "str1".
Можно также использовать строки расширения.
%PATH:~10,5%
расширит действие переменной среды PATH, затем использует только 5символов, которые начинаются с 11-го символа (пропустив 10) расширенногорезультата. Если длина не указана, по умолчанию используется оставшеесязначение переменной. Если оба значения (длина и число пропускаемых символов)отрицательны, следующим используемым значением будет длина значения переменнойсреды, добавленной к указанному значению пропуска или указанной длины.
%PATH:~-10%
извлечет последние 10 символов переменной PATH.
%PATH:~0,-2%
извлечет все символы переменной PATH, за исключением 2-х последних.
Наконец, добавлена поддержка связывания времени выполнения для переменных средыокружения. По умолчанию эта поддержка отключена. Ключ /V командной строкиCMD.EXE позволяет включать и выключать ее. Для вызова справки, наберите CMD /?
Связывание времени выполнения для переменных среды окружения полезно при обходеограничений раннего связывания, которое происходит при первом чтении текстовойстроки, а не при ее выполнении. Следующий пример демонстрирует возникающуюпроблему при использовании раннего связывания переменных:
set VAR=before if "%VAR%" == "before" ( set VAR=after if "%VAR%" == "after" @echo Тело внутреннего оператора сравнения )
Данное сообщение не будет выводиться, т.к. %VAR% в ОБОИХ выражениях IFподставляется в момент первого использования в первом IF, в том числе и в телопервого ветвления IF, которое является составным выражением. В IF внутрисоставного выражения в действительности сравниваются значения "before" и"after", что заведомо ложно. Следующий пример демонстрирует подобную ошибку:
set LIST= for %i in (*) do set LIST=%LIST% %i echo %LIST%
в данном случае список файлов текущей папки никогда не будет построен. Вместоэтого, значением переменной LIST будет имя последнего найденного файла.И вновь, это случилось потому, что %LIST% подставляется всего один раз -в момент обработки выражения FOR, когда список еще пуст.Фактически, приведенный фрагмент эквивалентен следующему примеру:
for %i in (*) do set LIST=%i
в котором имя последнего найденного файла сохраняется в переменной LIST.
Связывание времени выполнения для переменных среды окружения происходит прииспользовании специального символа (восклицательного знака), обозначающегопроведение сопоставления во время выполнения. Если включена поддержка связываниявремени выполнения, то для достижения ожидаемых результатов приведенные вышефрагменты должны быть изменены следующим образом:
set VAR=before if "%VAR%" == "before" ( set VAR=after if "!VAR!" == "after" @echo Тело внутреннего оператора сравнения )
set LIST= for %i in (*) do set LIST=!LIST! %i echo %LIST%
При включенной расширенной обработке команд доступны несколько переменныхсреды, которые не отображаются в списке, отображаемом при вызове команды SET.Значения этих переменных вычисляются динамически каждый раз при их извлечении.Если пользователь явно задает переменные с одним из этих имен,то это определение перекрывает соответствующее динамическое определение,описанное ниже:
%CD% - раскрывается в строку текущей директории.
%DATE% - раскрывается в текущую дату, используя тот же формат команды DATE.
%TIME% - раскрывается в текущую дату, используя формат команды TIME.
%RANDOM% - раскрывается в случайное десятичное число между 0 и 32767.
%ERRORLEVEL% - раскрывается в текущее значение ERRORLEVEL
%CMDEXTVERSION% - раскрывается в текущее значение версии расширенной обработки команд.
%CMDCMDLINE% - раскрывается в исходную командную строку, которая вызвалакомандный процессор.
Переменные среды, выставленные в моей Windows XP, которая уже 2 года живет без переустановки:%ALLUSERSPROFILE% = C:\Documents and Settings\All Users%CommonProgramFiles% = C:\Program Files\Common Files%COMPUTERNAME% = "Имя компьютера"%ComSpec% = C:\WINDOWS\system32\cmd.exe%CYGWIN% = tty%FP_NO_HOST_CHECK% = NO%NUMBER_OF_PROCESSORS% = 2%OS% = Windows_NT%Path% = C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem%PATHEXT% = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH%PROCESSOR_ARCHITECTURE% = x86%PROCESSOR_IDENTIFIER% = x86 Family 6 Model 15 Stepping 2, GenuineIntel%PROCESSOR_LEVEL% = 6%PROCESSOR_REVISION% = 0f02%ProgramFiles% = C:\Program Files%PROMPT% = $P$G%SystemDrive% = C:%SystemRoot% = C:\WINDOWS%TEMP% = C:\DOCUME~1\"Имя пользователя"\LOCALS~1\Temp%TMP% = C:\DOCUME~1\"Имя пользователя"\LOCALS~1\Temp%USERDOMAIN% = "Имя компьютера"%USERNAME% = "Имя пользователя"%USERPROFILE% = C:\Documents and Settings\"Имя пользователя"%windir% = C:\WINDOWS
interocitor.livejournal.com
Переменные среды
Переменные среды¶
Что это такое?¶
Переменная среды — это именованный объект, который содержит информацию, используемую одним или несколькими приложениями. Многие пользователи (особенно новички в Linux) находят этот подход несколько странным или неуправляемым. Но это впечатление ошибочно: используя переменные среды, можно очень легко изменить настройку разнообразных программ.
Важные примеры¶
В следующей таблице описывается ряд переменных, используемых в системе Linux. Примеры их значений приведены далее.
Переменная | Описание |
PATH | В этой переменной содержится список каталогов, разделенных двоеточиями, в которых система ищет исполняемые файлы. Если вы вводите имя исполняемого файла например ls, rc-update или emerge), который не находится ни в одной из перечисленных здесь каталогов, этот файл не запустится (если, конечно, вы не указали полный путь, например /bin/ls). |
ROOTPATH | У этой переменной такое же значение, что и у PATH, но в ней перечисляются только те каталоги, которые нужно просматривать при вводе команды пользователем с правами root. |
LDPATH | В этой переменной содержится список каталогов, разделенных двоеточиями, в которых динамический компоновщик ищет библиотеки. |
MANPATH | В этой переменной содержится список каталогов, разделенных двоеточиями, в которых команда man ищет страницы справки. |
INFODIR | В этой переменной содержится список каталогов, разделенных двоеточиями, в которых команда info ищет info-страницы. |
PAGER | В этой переменной содержится путь к программе, позволяющей постранично просматривать содержимое файлов, например less или more. |
EDITOR | В этой переменной содержится путь к программе, используемой для изменения файлов, например vi или nano. |
KDEDIRS | В этой переменной содержится список каталогов, разделенных двоеточиями, в которых находятся ресурсы KDE. |
CLASSPATH | В этой переменной содержится список каталогов, разделенных двоеточиями, в которых находятся классы Java. |
CONFIG_PROTECT | В этой переменной содержится список каталогов, защищаемых Portage при обновлении, разделенных пробелами. |
CONFIG_PROTECT_MASK | В этой переменной содержится список каталогов, исключаемых из защиты Portage при обновлении, разделенных пробелами. |
Ниже представлен пример определения всех этих переменных:
PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin" ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3" MANPATH="/usr/share/man:/usr/local/share/man" INFODIR="/usr/share/info:/usr/local/share/info" PAGER="/usr/bin/less" EDITOR="/usr/bin/vim" KDEDIRS="/usr" CLASSPATH="/opt/blackdown-jre-1.4.1/lib/rt.jar:." CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \ /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \ /usr/share/texmf/tex/platex/config/ /usr/share/config" CONFIG_PROTECT_MASK="/etc/gconf"Глобальное определение переменных¶
Каталог /etc/env.d¶
Для того, чтобы определить эти переменные централизованно, в Calculate существует каталог /etc/env.d. В нём находится ряд файлов, например, 00basic, 05gcc и так далее, в которых определяются переменные, необходимые программам, указанным в названии файлов.
Например, при установке gcc ebuild создает файл /etc/env.d/05gcc, содержащий следующие определения переменных:
PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2" ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2" MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man" INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info" CC="gcc" CXX="g++" LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"В других дистрибутивах вам предлагается изменять или добавлять определения переменных среды в /etc/profile или где-нибудь еще. Calculate, с другой стороны, облегчает вам поддержку и управление переменными среды, избавляя от необходимости уделять внимание многочисленным файлам, содержащим определения переменных.
Например, когда обновляется gcc, также без малейшего участия пользователя обновляется и /etc/env.d/05gcc.
От этого выигрывает не только Portage, но и вы, пользователь. Иногда от вас может потребоваться глобальная установка какой-нибудь переменной. Возьмем, к примеру, переменную http_proxy. Вместо того, чтобы возиться с /etc/profile, теперь можно просто создать файл (/etc/env.d/99local) и добавить нужные определения туда:
http_proxy="proxy.server.com:8080"Используя один и тот же файл для всех своих переменных, вы можете быстро увидеть все определенные вами переменные вместе.
Сценарий env-update¶
Переменная PATH определяется в нескольких файлах в /etc/env.d. Нет, нет это не ошибка: при запуске env-update различные определения объединяются перед обновлением переменных среды, позволяя пакетам (или пользователям) добавлять собственные значения переменных, не влияя на уже существующие.
Сценарий env-update объединяет значения переменных из файлов, находящихся в /etc/env.d, в алфавитном порядке. Имена файлов должны начинаться с двух десятичных цифр. Порядок обновления, используемый env-update:
00basic 99kde-env 99local +-------------+----------------+-------------+ PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"Объединение выполняется не всегда, а только для следующих переменных: KDEDIRS, PATH, CLASSPATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH и PRELINK_PATH_MASK. Для всех остальных переменных используется значение, определенное в последнем из файлов (по алфавиту в каталоге /etc/env.d).
При запуске сценария env-update создаются все переменные среды, и помещаются в /etc/profile.env (используемый файлом /etc/profile). Кроме того, на основе значения LDPATH создается /etc/ld.so.conf. После этого запускается ldconfig, чтобы вновь создать файла /etc/ld.so.cache, используемый динамическим компоновщиком.
Если вы хотите, чтобы результаты работы env-update вступили в силу немедленно, для обновления среды выполните следующую команду:
env-update && source /etc/profileПримечание: Эта команда обновляет переменные только в текущем терминале, в новых консолях и их потомках. То есть, если вы работаете в X11, потребуется или набирать source /etc/profile в каждом открываемом терминале, или перезапустить X, чтобы все новые терминалы обращались к новым переменным. Если вы используете диспетчер входа в систему, станьте пользователем с правами root и наберите /etc/init.d/xdm restart. Если нет, вам придется выйти и снова войти в систему, чтобы X порождала потомков, использующих новые значения переменных.
Локальное определение переменных¶
Пользовательские переменные¶
Далеко не всегда нужно определять переменные глобально. Например, вам может понадобиться добавить /home/my_user/bin и текущий рабочий каталог (где вы находитесь) к переменной PATH, но при этом не нужно, чтобы это добавление появилось и в переменной PATH у всех остальных пользователей. Если вы хотите определить переменную среды локально, используйте ~/.bashrc или ~/.bash_profile. Пример расширения PATH в ~/.bashrc для локальных нужд:
#(двоеточие без последующего указания каталога означает текущий рабочий каталог)PATH="${PATH}:/home/my_user/bin:"Обновление вашей переменной PATH произойдет, когда вы выйдете и снова войдете в систему.
Сеансовые переменные¶
Иногда нужны еще более жесткие ограничения. Вам может потребоваться возможность запуска исполняемых файлов из специально созданного временного каталога без указания полного пути к ним, и без изменения файла ~/.bashrc ради нескольких минут.
В этом случае можно просто определить переменную PATH для текущего сеанса командой export. Переменной будет присвоено временное значение до тех пор, пока вы не завершите сеанс. Пример определения сеансовой переменной среды:
export PATH="${PATH}:/home/my_user/tmp/usr/bin"www.calculate-linux.org
Переменные среды - Rapid Environment Editor
Что же такое переменные среды (переменные окружения)? Вот определение от Microsoft:
Переменные окружения - это строки, содержащие такие сведения, как имя диска, путь или имя файла. Эти переменные определяют поведение различных программ. Например, переменная среды TEMP задает папку, в которой хранятся временные файлы.RapidEE может быть использован для редактирования таких переменных как PATH, CLASSPATH (Java-программисты знают о чем речь), INCLUDE или LIB (а это уже привет C++ разработчикам). Поскольку RapidEE "на лету" проверяет корректность путей и имен файлов, то вероятность ошибки сводится практически к нулю.
Стандартные значения переменных
Переменные, измененные в Windows Vista/7 выделены красным.
%ALLUSERSPROFILE% | C:\Documents and Settings\All Users | C:\ProgramData |
%APPDATA% | C:\Documents and Settings\{username}\Application Data | C:\Users\{username}\AppData\Roaming |
%COMPUTERNAME% | {computername} | {computername} |
%COMMONPROGRAMFILES% | C:\Program Files\Common Files | C:\Program Files\Common Files |
%COMMONPROGRAMFILES(x86)% | C:\Program Files (x86)\Common Files | C:\Program Files (x86)\Common Files |
%COMSPEC% | C:\Windows\System32\cmd.exe | C:\Windows\System32\cmd.exe |
%HOMEDRIVE% | C: | C: |
%HOMEPATH% | \Documents and Settings\{username} | \Users\{username} |
%LOCALAPPDATA% | Только в Windows Vista и выше | C:\Users\{username}\AppData\Local |
%LOGONSERVER% | \\{domain_logon_server} | \\{domain_logon_server} |
%PATH% | C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem | C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem |
%PATHEXT% | .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.WSF;.WSH | .com;.exe;.bat;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh;.msc |
%PROGRAMFILES% | C:\Program Files | C:\Program Files |
%PROGRAMFILES(X86)% | C:\Program Files (x86) (только 64-битная версия) | C:\Program Files (x86) (только 64-битная версия) |
%PROMPT% | $P$G | $P$G |
%SystemDrive% | C: | C: |
%SystemRoot% | C:\Windows | C:\Windows |
%TEMP% and%TMP% | C:\Documents and Settings\{username}\Local Settings\Temp | C:\Users\{username}\AppData\Local\Temp |
%USERDOMAIN% | {userdomain} | {userdomain} |
%USERNAME% | {username} | {username} |
%USERPROFILE% | C:\Documents and Settings\{username} | C:\Users\{username} |
%WINDIR% | C:\Windows | C:\Windows |
%PUBLIC% | Только в Windows Vista и выше | C:\Users\Public |
%PROGRAMDATA% | Только в Windows Vista и выше | C:\ProgramData |
%PSModulePath% | Только в Windows 7 | %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\ |
www.rapidee.com
Переменная среды PATH в linux Flip Linux
Все немного сложнее, чем то, что предоставляет ваша оболочка.
Существует три основных способа входа в систему:
- логин с подлинного терминала (в настоящее время, в основном консоль)
- логин от псевдотерминала (главным образом сетевых подключений)
- логин из графической среды
Все они могут настроить среду перед выполнением вашей оболочки, и все они ( HOME , LOGNAME , TERM , вероятно, не установлены вашей оболочкой, и даже если у вас нет файлов запуска, ваша оболочка обычно наследует среду PATH переменная).
При входе с подлинного терминала процесс обработки соединения, вероятно, настроит переменную окружения TERM и делегирует остальную часть работы программе login в login . Эта программа выполняет некоторые проверки (например, запрет на вход для root на небезопасных терминалах), гарантирует, что вся среда, отличная от TERM будет чистой, инициализирует HOME , PATH , SHELL , TERM , MAIL и LOGNAME а затем запустит вашу оболочку входа. Затем ваша оболочка выполнит собственную инициализацию.
При входе с псевдотерминала те же самые вещи происходят с небольшим завихрением. Часто среда получает больше инициализации от процесса, обрабатывающего соединение, чем просто переменная среды TERM (сетевые протоколы часто имеют способ переноса среды с другой стороны), и поэтому login используется в режиме, в котором он не очищает среда, очистка осуществляется программой, обрабатывающей соединение.
Графические среды обычно не передают login но ведут себя аналогично. После проверки ваших учетных данных они создают чистую среду (с обычной переменной среды и по крайней мере DISPLAY установлены правильно, они часто позволяют сценарию, предоставленному sysadmin, добавлять вещи), а затем запускать сценарий запуска для среды вашего рабочего стола; те могут попытаться получить среду из вашей оболочки входа, а также часто предоставляют возможность предоставить сценарий для завершения настройки. Поэтому, когда вы запускаете какую-либо программу со своего рабочего стола, ее среда представляет собой комбинацию того, что графическая программа входа в систему, среда рабочего стола и ваши сценарии входа в систему.
Последнее: когда вы запускаете эмулятор терминала, вы можете получить либо оболочку входа (в этом случае выполняется сценарий входа в систему из оболочки, и, таким образом, вы можете увидеть эффект последних изменений в нем, но не увидите в той же среде, что и другие программы) или нет (в этом случае скрипт входа в систему из оболочки не выполняется, вы не видите свои последние изменения, но вы получаете ту же среду, что и другие программы, – измененные интерактивной инициализацией скрипт вашей оболочки).
fliplinux.com