Переменная среда динамическое с именем значение, которое может повлиять на поведение запущенных процессов на компьютере. Они являются частью среды, в которой выполняется процесс. Например, выполняющийся процесс может запросить значение переменной среды TEMP, чтобы найтиподходящее место для хранения временных файлов, или переменную HOME или USERPROFILE, чтобы найти преобразование каталогов, принадлежащую пользователю, запускающий процесс.
Они были представлены в своей современной форме в 1979 году с версией 7 Unix, поэтому включены во все разновидности и варианты Unix операционной от с этого момента и далее, включая Linux и macOS. Начиная с PC DOS 2.0 в 1982 году, все последующиеоперационные системы Microsoft, включая Microsoft Windows и OS / 2, а также включали функция их как, хотя и с использованием других синтаксисом, с использованием и стандартными именами чисел.
Во всех Unix и В Unix-подобных системы каждый процесс имеет свой отдельный набор чисел среды . По умолчанию, когда процесс создается, он наследует дублирующую основу своего родительского процесса, за исключением явных изменений, сделанных родителем при создании дочернего процесса. На уровне API эти изменения должны быть между запуском fork
и exec
. В качестве альтернативы, из командных оболочек, таких как bash, пользователь может изменить переменные среды для конкретного вызова команды, косвенно вызывая ее через env
или используя нотацию ENVIRONMENT_VARIABLE = VALUE
. Запущенная программа может получить доступ к значениям чисел среды для целей конфигурации.
Сценарии оболочки и пакетные файлы используютпеременные процессы среды для передачи данных и настроек дочернимам. Их также можно использовать для хранения временных значений для последующего использования в сценарии оболочки. Однако в Unix для этого предпочтительны неэкспортируемые переменные, поскольку они не просачиваются за пределы процесса.
В Unix переменная среда, измененная в сценарии или скомпилированной программе, будет влиять только на этот процесс и, возможно, на дочерние процессы. Это не повлияет народительский процесс и любые несвязанные процессы. Точно так же изменение или значения замены внутри пакетного файла DOS изменили переменную на время существования COMMAND.COM
.
В Unix переменные среды обычно инициализируются во время запуска системы с помощью системных сценариев инициализации и, следовательно, наследуются всеми другими процессами в системе. Пользователи могут, и часто делают, дополнять их в сценарии профиля для оболочки, которую онииспользуют. В Microsoft Windows значение по умолчанию каждой модели среды хранится в реестре Windows или задается в файле AUTOEXEC.BAT
.
В Unix программа setuid используемая среда, выбранная ее поражающей стороной. динамический компоновщик обычно загружает код из мест, указанных переменными средами $ LD_LIBRARY_PATH
и $ LD_PRELOAD
, и запускает его с полномочиями процесса. Она была вызвана запуском программы setuid,вызванной запуском программы. По этой причине libc сбрасывает эти переменные среды при запуске в процессе setuid. Программы setuid обычно сбрасывают неизвестные переменные среды и проверяют другие или устанавливают для них разумные значения.
Переменные можно использовать как в сценариях, так и в текущей строке. На них обычно помещаются специальные символы перед или вокруг имени. Например, чтобы показать домашний каталог пользователя, в большинствеслучаев пользователь должен получить:
echo $ HOME
В интерпретатора строки DOS, OS / 2 и Windows, таких как COMMAND.COM
и cmd.exe
, пользователь должен получить следующее:
ECHO% HOME%
В Windows PowerShell пользователь должен ввести следующее:
Запись-вывод $ env: HOMEPATH
Команды env
, set
и printenv
отображают все переменные среды и их значения. printenv
также можно использовать для печатиодной стандартной используемой в качестве единственного аргумента команды.
Команды env
и set
также используются для установки среды и часто включаются непосредственно в оболочку.
В Unix также следующие, но они часто зависят от определенных команд команд оболочки.
ПЕРЕМЕННАЯ = значение # экспорт ПЕРЕМЕННАЯ # для Bourne и связанных оболочек
экспорт ПЕРЕМЕННАЯ = значение # для ksh, bash и связанных оболочек
setenv VARIABLE value # для csh и связанных оболочек
Несколько простых принципов определяют, как переменные среды достигают своего эффекта.
Переменные среды локальными для процесса, в которых они были установлены. Если диаграмма два оболочки и значение среды изменено в одном, это изменение не будет замечено другим.
Когда создается дочерний процесс, он наследует все переменные среды и их значения от родительского процесса.Обычно, программа вызывает новую программу, она сначала запускает дочерний процесс посредством разветвления, затем дочерний процесс настраивает среду по необходимости и, наконец, дочерний заменяет себя программой, которая будет вызвана. Эта процедура дает вызывающую программу контроль над средой вызывающей программы.
В Unix и Unix-системах системного набора средств среды к регистру.
В оболочках Unix переменные могут быть назначены без ключевого слова export
. Переменные, таким образом, снабженные командой set
, но не являются настоящими переменными средами, поскольку они хранятся только оболочкой и неизвестны всем остальным процессам. Команда printenv
их не отображает, а дочерние процессы не наследуют их.
ПЕРЕМЕННАЯ = значение
Синтаксис префикса экспортирует "истинную" переменную среду в дочерний процесс, не влияющую на текущий процесс:
ПЕРЕМЕННАЯ = значение_программы[аргументы]
Постоянство стандартной среды может быть общесессионным или общесистемным.
unset - это встроенная команда, реализованная как семейством оболочка Борна (sh, ksh, bash и т. Д.), Так и семейством оболочка C (csh, tcsh, и т. д.) оболочек командной строки Unix. Он сбрасывает переменную оболочку, удаляя ее из памяти и экспортированной среды оболочки. Он реализован как оболочка , встроенная в, поскольку напрямую управляет внутреннимикомпонентами оболочки. Переменные оболочки только для чтения нельзя сбросить. Если кто-то отключить переменную только для чтения, команда отключена распечатает сообщение об ошибке и вернет ненулевой код выхода.
В интерпретатора командной строки DOS, OS / 2 и Windows, таких как COMMAND.COM
и cmd.exe
команда SET
используется для целевых чисел и среды с использованием следующих аргументов:
SET VARIABLE = value
SET
без аргументов отображает все переменные среды вместе с их значениями.
Примеры включают среду:
PATH
: список путей к каталогам. Когда пользователь вводит команду без инструкций полного пути, этот список проверяется, чтобы увидеть, содержит ли путь, ведущий к команде.HOME
(Unix-like ) и ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ
(Microsoft Windows): укажите, где домашний каталог пользователя находится вфайловой системе.ГЛАВНАЯ / {. AppName}
(Unix-like ) и APPDATA \ {DeveloperName \ AppName}
(Microsoft Windows): для хранения настроек приложения. Многие приложения используют использовать ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ
для приложений в Windows: ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ
следует использовать только в диалоговых окнах, которые позволяют пользователю выбирать между путями, такими как Документы / Изображения / Загрузки / Музыка
; для программных целейAPPDATA
(для настроек перемещаемых приложений, находящихся в использовании), LOCALAPPDATA
(для локального приложения) или PROGRAMDATA
(для приложений, часто используемых Пользователями).TERM
(Unix-like ): указывает тип используемого компьютерного терминала или эмулятора терминала (например, vt100
или dumb
).PS1
(Unix-like ): указывает, как подсказка отображается в ОболочкаБорна и варианты.MAIL
(Unix-like ): используется для указаний, где находится почта пользователя.TEMP
: место, где процессы могут хранить временные файлы.$ PATH
%PATH%
.$ HOME
g e tpwuid
и getuid
, $ HOME
часто для удобства в различных сценариях оболочки (и другие контексты). Использование среды также дает пользователю возможность указать на другой каталог.$ PWD
$ DISPLAY
$ LD_LIBRARY_PATH
$ LIBPATH
или $ SHLIB_PATH
$ LD_LIBRARY_PATH
, обычно используемые в более старых версиях Unix.$ LANG, $ LC_ALL, $ LC _...
$ LANG
используется для установки языкового стандарта по умолчанию. Например, если значения локали равны pt_BR
, то установлен язык (бразильский), португальский, и там, где это уместно, используется бразильская практика. Различные аспекты локализации контролируются отдельными $ LC_
-переменными ($ LC_CTYPE
, $ LC_ COLLATE
, $ LC_DATE
и т. Д.). $ LC_ALL
может использовать одного и того же языкового стандарта для всех принудительного использования того же языкового стандарта.$ TZ
/ usr / share / zoneinfo
).$ BROWSER
% s
,.
В основной среде DOS действует стандартным командным процессом, кот орый наследуетпредварительную среду, определенную в CONFIG.SYS
при первом ом т загружен.>COMMAND / E: nв диапазоне от 160 до 32767 байтов. Унаследованные от дочерних процессов, обычно уменьшаются до размера, которое соде ржат. оторые процессоры системы строки (например, 4DOS ) позволяют определить минимальный объем свободного пространства среды, может быть доступен при запуске вторичных оболочек. Содержимое среды остается неизменным при сохранении, их имена (без "%
") всегдапреобразуются в верхний регистр, за исключением среды, хотя через директива CONFIG.SYS
167>SET в DR DOS 6.0 и выше (и только с SWITCHES = / L
(для "разрешить имена в нижнем регистре ") в DR-DOS 7.02 и выше). В принципе, MS-DOS 7.0 и выше поддерживает имена в нижнем регистре (% windir%
), но не предоставляет никаких средств для их определения. Имена среды среды ожидают, что строчные буквы, хранятся всреде так же, как и обычные переменные среды, но остаются невидимыми для программ DOS, поскольку они написаны так, чтобы только прописных чисел. Некоторые командные процессоры ограничивают максимальную модель имени 80 символами. Хотя в основном ограничены только размером сегмента среды, некоторые DOS и 16-разрядные программы Windows не ожидают, что объем среды превышает 128 символов. DR-DOS COMMAND.COM
поддерживает переменные среды до 255, 4DOS даже до 512 символов. Время COMMAND.COM
можно настроить (через /L:128..1024
) для поддержки внутренних командных строк длиной до 1024 символов в MS-DOS 7.0 и выше, переменные среды должны быть также должен содержать не менее 1024 символов. Версиих DR-DOS, которые часто не нуждаются в их среде после установки, могут быть уменьшены или перемещены с помощью SETENV
или INSTALL [HIGH]
/LOADHIG
параметры / Z
(нулевая среда), / D [: loaddrive ]
(заменитедиск, например, B: TSR. COM
) и / E
(заменить программой), чтобы минимизировать получаемый драйвером объем резидентной памяти.
В режиме несущих переменные среды заменяется строкой нулевой пакетной длины.
Стандартные переменные или зарезервированные переменные среды включают:
% APPEND%
(поддерживается, начиная с DOS 3.3)APPEND / E
, которое также обеспечивает преобразование имен каталогов в верхний регистр. Некоторое программное обеспечение DOS фактически хранится в регистре верхнего уровня, поэтому переменную лучше использовать с помощью команд SET
. Длинные имена файлов, содержащие пробелы или другие специальные символы, не должны заключаться в кавычки ("
).% CONFIG%
(поддерживается с MS-DOS 6.0 и PC DOS 6.1, данная переменная содержит символическое имя выбранной в момент конфигурации установки ROM-DOS )IO.SYS
, IBMBIO.COM
и т. Д.) К имени, определенному принимает CONFIG.SYS
директивой MENUITEM
перед запуском команды Основная основная - разрешить другие Особые случаи в AUTOEXEC.BAT
и подобных пакетных заданиях в зависимости от выбранной опции во время загрузки. Это можноэмулировать в DR-DOS, используя CONFIG. SYS
директива SET
как SET CONFIG = 1
.% CMDLINE%
(введена с 4DOS, также поставляется с MS-DOS 7.0 )COMMAND.COM
по-прежнему поддерживает не более 126 символов в приглашении по умолчанию (если не переопределено с помощью /U:128..255
для указаний Размер внутренней строки может быть меньше расширенной (в зависимости от /L:128..1024
для указаний размера буфера). В дополнение к байту длины строки в PSP, командная строка PSP обычно ограничена ASCII- 13, командные строки длиной более 126 символовобычно усекаются вставками ASCII-13 в позиции 127, но на нее нельзя подавлена во всех сценариях. 354>, как в @XCOPY...
для обратной совместимости Некоторые бета-версии Microsoft Chicago использовали % CMDLINE%
для хранения только оставшейся части государственной строки, превышения 126 для минимизации размера среды при загрузке не -перемещение ТСР., вмес то полной строки.% COMSPEC%
(поддерживается с DOS 2.0)C: \ КОМАНДА.COM
или C: \ DOS \ COMMAND. COM
. Он не должен содержать>длинных имен файлов, в DR-DOS он может содержать пароли файлов и каталогов. Он настраивает основной процессором так, чтобы указывать на себя (обычно это соответствует настройке директивы CONFIG.SYS
SHELL
), так что резидентная часть командного процессора может перезагружать свою временнуючасть с диска после выполнения крупных программ. Значение можно изменить во время выполнения, чтобы отразить изменения в конфигурации, которые потребляют от командного процессора перезагрузки из других мест. Переменная также используется при запуске вторичных оболочек.% COPYCMD%
(поддерживается начиная с MS-DOS 6.2 и PC DOS 6.3, также поддерживается ROM -DOS )/ Y
(для принятия «Да» на запросы) вкачестве значения по умолчанию для COPY
, XCOPY
и MOVE
. Значение по умолчанию / Y
можно изменить, задаваемый переключатель / -Y
в строке. Переключатель / Y
дает команду заменить необходимые файлы без запроса подтверждения.% DIRCMD%
(поддерживается с MS-DOS 5.0 и PC DOS 5.0, также поддерживается ROM-DOS )DIR
, включая файлы. Предустановленные параметры по умолчанию можно переопределить, указав отрицательный переключатель в текущей строке Например, если % DIRCMD%
содержит переключатель / W
, то его можно переопределить с помощью DIR / - W
в государственной строке. Это похоже на переменную среду %$DIR%
в DOS Plus и средство для определения переключателей по умолчанию для DIR
через его / C
или/ R
в DR-DOS COMMAND.COM
. % DIRCMD%
также поддерживает внешние команды SDIR.COM
/DIR.COM
Укладчик в Novell DOS 7 и выше.% LANG%
(поддерживается MS-DOS 7.0 )% LANGSPEC%
(поддерживается с ) MS-DOS 7.0 )% NO_SEP%
(поставляется с PC DOS 6.3 и DR-DOS 7.07 )SET NO_SEP = ON
или SET NO_SEP = 1
под DOS. DR-DOS позволяет переопределить системный разделитель тысяч, отображаемых, как в примере ниже SET NO_SEP =.
.% PATH%
(поддерживается начиная с DOS 2.0)$ PATH
(но некоторые приложения DOS и Windows также используют этот список для поиска файлов данных, подобных $ LD_LIBRARY_PATH
в Unix -подобных системах). Обычно его можно изменить с помощью команды PATH
(или PATH / E
в MS-DOS 6.0 ), чтотакже гарантирует, что каталог имена переводятся в верхний регистр. Некоторое программное обеспечение DOS фактически, что имена будут храниться в верхнем регистре, а длина списка не будет содержать 123 символа, поэтому переменную лучше не использовать с помощью команд <>SET
. Длинные имена файлов, сначала имеются пробелы или другие специальные символы, не должны заключаться в кавычки ("
). По умолчанию выполняется поиск в текущем каталоге, но некоторые процессыпоследовательности строк, такие как 4DOS разрешить это включение в список «.
» (для текущего каталога), чтобы переопределить этот порядок поиска; некоторые программы DOS несовместимы с расширением.% PROMPT%
(поддерживается, начиная с DOS 2.0)$
, определяющую отображение подсказки . Обычно она изменяется через PROMPT
команда.% TEMP%
(и % TMP%
)% TEM P%
, тогда как сторонние программы также используют % TMP%
. Обычно % TEMP%
имеет приоритет над % TMP%
.Семейств о DR-DOS поддерживает ряд стандартных чисел среды, включая:
% BETA%
COMMAND.COM
при запуске вторичных оболочек.% DRDOSCFG%
/ % NWDOSCFG%
/ % OPENDOSCFG%
\
"), в котором искать .INI
и файлы конфигурации .CFG
(то есть есть активные приложения DR-DOS, такие как TASKMGR.INI
, TASKMAX.INI
, VIEWMAX.INI
, FASTBACK.CFG
и т. Д., Файлы для конкретных, например COLORS.INI
, или глобальные файлы, например DRDOS.INI
, NWDOS.INI
, OPENDOS.INI
илиDOS.INI
), как используется командами INSTALL
и SETUP
и различные программы DR-DOS, такие как DISKOPT
, DOSBOOK
, РЕДАКТИРОВАТЬ
, FBX
, FILELINK
, БЛОК
, SECURITY.OVL
/ NWLOGIN.EXE
, SERNO
, TASKMAX
, TASKMGR
, VIEWMAX
или UNDELETE
. Он не должен содержать длинных имен файлов.% DRCOMSPEC%
% COMSPEC%
, необязательно включая пароли файлов и каталогов. В качестве альтернативы он может содержать специальное значение «ON
» или «1
», чтобы принудительно использовать переменную % COMSPEC%
даже в сценариях, где переменная % COMSPEC%
может указывать на неправильный процессор командной строки, например, при запуске некоторых версий команды DR-DOS SYS
под чужим операционная система.% DRSYS%
ON
» или «1
» приведет к принудительному использованию некоторых версий DR-DOS SYS
команда для работы в чужих системах вместо отображения предупреждения.% FBP_USER%
Файлы конфигурации FBX
и {user} .FB
в Novell DOS 7.% HOMEDIR%
% INFO%
COMMAND.COM
эта переменная указывает отображается током $ I
en команды PROMPT
. Его можно использовать, например, для информирования пользователя о выходе из вторичных оболочек.% LOGINNAME%
COMMAND.COM
эта переменная указать отображаемое имя пользователя.>$ U команды PROMPT
, как установлены сценарии входа в систему для Novell NetWare. См. Также псевдопеременную с аналогичным названием % LOGIN_NAME%
.% MDOS_EXEC%
ON
» или «OFF
» в Многопользователь ская DOS. Если этот параметр включен, разрешает приложения выполнять оболочку для вторичных оболочек с выделенным (DPA), чтобы иметь максимальную память DOS, доступную для приложений, вместотого, чтобы иметь возможность запускать их в том же домене, что и в DOS.% NOCHAR%
[Y, N]
, тем самым отменяя текущее значение системы по умолчанию (обычно « N
"в английской версии DR-DOS). Если он содержит, будет взят только первый символ в верхнем регистре. Y: ynиспользуется для указаний символов «Да» / «Нет» (тем самым отменяя % NOCHAR% <См.Также соответствующие директиву CONFIG.SYS
NOCHAR
и переменную среду % YESCHAR%
.
% NOSOUND%
ON
" или "1
" отключен звуковые сигналы по умолчанию, выдаваемые некоторые команды DR-DOS в определенных, наприме р, для информирования пользователя о завершении некоторой операции, которая требуется вмешательство пользователя, или когда была неправильная клавиша клавиша. аметров звуковых сигналовпереопределяют этот параметр.% OS%
DOSPLUS
» (DOS Plus 1.2 в эмуляции DOS), «CPCDOS 4.1
» (DOS Plus 1.2 в CP / M эмуляция), «DRDOS
» (DR DOS 3.31 - 6.0, DR DOS Panther, DR DOS StarTrek, DR-DOS 7.02 - 7.05 ), « EZDOS
» (EZ-DOS 3.41 ), «PALMDOS
"и" NetWare PalmDOS
"(PalmDOS 1.0 )," NWDOS
"(Novell DOS 7 )," NWDOS7
"(Novell DOS 7 Beta)," OPENDOS
"(Caldera OpenDOS 7.01, Caldera DR-OpenDOS 7.02 )," CDOS
"(Concurrent DOS, Concurrent DOS XM )," CPCDOS
"(Concurrent PC DOS )," CDOS386
"(Concurrent DOS 386 )," DRMDOS
"(DR MultiuserDOS )," MDOS
"(CCI Multiuser DOS ), «IMSMDOS
» (IMS Multiuser DOS ), «REAL32
» (REAL / 32 ). MS-DOS INTERSVR
также ищет значение «DRDOS
». См. Также переменную среду с таким же именем %OS%
, представленную позже в семействе Windows NT.% PEXEC%
$ X
команды PROMPT
дотого, как COMMAND.COM
представит приглашение после возврата из выполнения внешней программы.% SWITCHAR%
/
» (стиль DOS), «-
» (стиль Unix) и «[
» (стиль CP / M). См. Также соответствующие директиву CONFIG.SYS
SWITCHAR
(для установки SwitChar системы) и % /%
системная информационная переменная в некоторых выпусках DR-DOS COMMAND.COM
(для получения текущих настроек переносимых пакетных заданий).% TASKMGRWINDIR%
SYSTEM.INI
для использования DR-DOS TASKMGR
обнаружен многозадачный, отменяя его по умолчанию для поиска файла.% VER%
VER
. Он также используется для токена $ V
команды PROMPT
и влияет на значение возвращаемой переменной системной информации % OS_VERSION%
. Известные значения включают «1.0
» (PalmDOS 1.0 ), «1.2
» (DOS Plus 1.2 в эмуляции DOS), «<167.>2.0"(Concurrent DOS 386 2.0 ),"3.0
"(Concurrent DOS 386 3.0 )," 3.31
" (DR DOS 3.31 ), «3.32
» (DR DOS 3.32 ), «3.33
» (DR DOS 3.33 ), «3.34
» (DR DOS 3.34 ), «3.35
» (DR DOS 3.35 ), «3.40
"(DR DOS 3.40 )," 3.41
"(DR DOS 3.41, EZ-DOS 3.41 )," 3.41T
"(DR DOS 3.41T )," 4.1
"(Concurrent PC DOS 4.1 )," 5.0
"(DR DOS 5.0, DR Multiuser DOS 5.0 )," 5.1
"(Novell DR Multiuser DOS 5.1 )," 6.0
"(DR Concurrent DOS XM 6.0, DR DOS 6.0 ),« 6.2
»(DR Concurrent DOS XM 6.2 ), «7
» (Novell DOS 7, Caldera OpenDOS 7.01, DR-DOS 7.02 - 7.05 ), «7,00
» (CCI Multiuser DOS 7.00 ), «7.07
» (DR-DOS 7.07 ), «7.1
» (IMS Multiuser DOS 7.1 ), «7.21
»(CCI Multiuser DOS 7.21 ),« 7.22
»(CCI Multiuser DOS 7.22 ) и т. Д.% YESCHAR%
[Y, N]
, тем самым отменяя текущее значение системы по умолчанию (обычно «Y
» в английских версиях DR-DOS). Если он содержит, будет взят только первый символ в верхнем регистре. Некоторые команды также параметр системы строки / Y
для автоматического принятия «Да» на запрос, тем самым подавляя такие запросы. Однако, если параметр / Y: y
используется для указания символа «Да» (тем самым отменяя любую настройку % YESCHAR%
), запросы не подавляются. См. Также соответствующую директиву CONFIG.SYS
YESCHAR
и переменную среды % NOCHAR%
.% $ CLS%
CLS
command is issued, thereby overriding the internal default ("←[2J
" under DR-DOS, "←E
" under DOS Plus 1.2 on Amstrad machines as well as under Concurrent DOS, Multiuser DOS, and REAL/32 for VT52 terminals, or "←+
" under Multiuser DOS for ASCII terminals). If the variable is not defined and no ANSI.SYS
console driver is detected, the DR-DOS COMMAND.COM
will directly clear thescreen via INT 10h/AH=00h
BIOS function, like MS-DOS/PC DOS COMMAND.COM
does. A special \nnn
-notation for octal numbers is supported to allow the definition of special characters like ESC (ASCII-27 = "←" = 1Bh = 33o), as f.e. in SET $CLS=\033[2J
. To send the backslash ("\
") itself, it can be doubled "\\
".%$DIR%
/L
or /W
. See also the similar environment variable %DIRCMD%
and the DIR
options /C
and /R
of the DR-DOS COMMAND.COM.%$PAGE%
ВКЛ
или «ВЫКЛ
» для управления разбивкой на страницы. Установка этого параметра на «ВКЛ
» имеет тот же эффект, что и добавление / P
в поддерживающие его команды ( например DIR или TYPE ).% $ LENGTH%
/ P
, поддерживаемой различными командами или с автоматической разбивкой на страницы. См. также соответствующие переменные среды % $WIDTH%
и %DIRSIZE%
, а также аналогичная псевдопеременная % _ROWS%
.% $ WIDTH%
DIR / W
или TYPE filename
. См. Также соответствующие переменные среды % $LENGTH%
и % DIRSIZE%
, а также аналогичнаяпсевдопеременная % _COLUMNS%
.% $ SLICE%
SLICE
.% $ ON%
TYPE подстановочный знак
, например SET $ ON = \ 033 [1m
с ANSI.SYS загружен или SET $ ON = \ 016
для принтера IBM или ESC / P. Чтобы узнать о стандартной восьмеричной системе счисления \ nnn
, см. %$CLS%
. В то время как переменная по умолчанию не определена в DOS Plus и DR-DOS, значение по умолчанию Multiuser DOS для терминала ASCII равно SET $ ON = \ 033p
. См. Также связаннуюпеременную среды % $ OFF%
.% $ OFF%
TYPE подстановочный знак
, например SET $ OFF = \ 033 [0m
с ANSI.SYS загружен или SET $ OFF = \ 024
для принтера IBM или ESC / P. Чтобы узнатьо стандартной восьмеричной системе счисления \ nnn
, см. %$CLS%
. В то время как переменная по умолчанию не определена в DOS Plus и DR-DOS, значение по умолчанию Многопользовательская DOS для терминала ASCII равно SET $ OFF = \ 033q
. См. Также связанную переменную среду % $ ON%
.% $ HEADER%
TYPE
под DR-DOS 7.02 и выше. Его можно использовать для выделения, разбивки на страницы или форматирования, например. при отправке вывода на принтер, то есть SET $ HEADER = \ 017
для принтера IBM или ESC / P. Чтобы узнать о стандартной восьмеричной системе счисления \ nnn
, см. %$CLS%
. См. Также связанную переменную среду % $ FOOTER%
.% $ FOOTER%
TYPE
под DR-DOS 7.02 и выше. Он используется для возврата к нормальному формату вывода, то есть SET $ FOOTER = \ 022 \ 014
в примере с принтером выше. Чтобы узнать о стандартной восьмеричной системе счисления \ nnn
, см. %$CLS%
. См. Также связанную переменную среду % $ HEADER%
.Datalight ROM-DOS также поддерживает ряддополнительных стандартных сред, включая:
% DIRSIZE%
DIR
параметров / Pи / W(аналогично % $ LENGTH%
и %$WIDTH%
в DOS Plus).% NEWFILE%
% TZ%
, % COMM%
, %SOCKETS%
, % HTTP_DIR%
, % HOSTNAME%
и % FTPDIR%
также использовались ROM-DOS.
% BEGINLIBPATH%
% LIBPATH %
(т.е. устанавливается при запуске системы с помощью специальной директивы CONFIG.SYS LIBPATH
). Здесь можно указать относительные каталоги, включая«.
»для текущего каталога. См. Также связанную переменную среду % ENDLIBPATH%
.% ENDLIBPATH%
% BEGINLIBPATH%
, но поиск выполняется после списка каталогов в % LIBPATH%
.Переменные системного пути расположения критических ресурсов системы и, как таковые, обычно не зависят от пользователя.
% APPDATA%
% LOCALAPPDATA%
%ComSpec %
/%COMSPEC %
% ComSpec%
переменная содержит полный путь к командному процессору; в семействе операционных систем Windows NT это cmd.exe, а в Windows 9x % COMSPEC%
- это COMMAND.COM.% OS%
% OS%
содержит символическое имя операционных систем, чтобы различать разные наборы функций в пакетных заданиях. Он похож на переменную среду с одинаковым именем %OS%
, обнаруженную во всех связанных с DOS операционных системах Digital Research - происхождение, например, Concurrent DOS, Многопользовательский DOS., REAL / 32, DOS Plus, DR DOS, Novell DOS иOpenDOS. % OS%
всегда содержит «Windows_NT
» в семействе Windows NT.% PATH%
% PATH%
, но только на одном уровне косвенного обращения. Если эта переменная среда подпути сама содержит переменнуюсреду, представляющую путь, % PATH%
не будет правильно расширяться при подстановке переменных. Эквивалентно альтернативно Unix $PATH
.% ProgramFiles%
, % ProgramFiles (x86)%
, % ProgramW6432%
% ProgramFiles%
указывает на каталог Program Files, в котором хранятся все установленные программы Windows и другие. По умолчанию в русскоязычных системах это «C: \ Program Files
». В 64-разрядных выпусках Windows (XP,2003, Vista) также есть % ProgramFiles (x86)%
, по умолчанию это «C: \ Program Files (x86)
» и % ProgramW6432%
, значение по умолчанию - «C: \ Program Files
». Сам % ProgramFiles%
зависит от того, является ли процесс, запрашивающим переменную среду, 32-битным или 64-битным (это вызвано перенаправлением Windows-on-Windows 64-бит).% CommonProgramFiles%
C: \ Program Files \ Common Files
».% SystemDrive%
% SystemDrive%
является специальной системной переменной окружения в Windows NT и ее производных. Его значение - это диск, на котором был размещен системный каталог. Значение % SystemDrive%
в большинстве случаев равно «C:
".% SystemRoot%
% SystemRoot%
- это специальная общесистемная переменная среда, обнаруженная в Windows NT. семействооперационных систем. Его значение - расположение системного каталога, включая диск и путь. Диск такой же, как % SystemDrive%
, а путь по умолчанию при чистой установке зависит от версии операционная система. По умолчанию: \ WINDOWS
".\ WINNT
".\ WINNT35
".\ WTSRV
".% windir%
% SystemRoot%
). Windows 95, Windows 98 и Windows ME по умолчанию установлены в «C: \ Windows
». Для других версий Windows, см. Запись % SystemRoot%
выше.Переменные управления хранят информацию, относящуюся к ресурсам и настройкам, принадлежащим различным профилям пользователей в системе.Как правило, эти переменные не относятся к классическим системным ресурсам, которые необходимы для работы ОС.
% ALLUSERSPROFILE%
(% PROGRAMDATA%
начиная с Windows Vista)% USERDOMAIN%
% LOGONSERVER%
содержит имя хоста сервера, аутентифицированные учетные данные текущего пользователя (имя и пароль). Для группы домашних ПК и ПК в рабочей группе сервером аутентификации обычно является сам ПК. Для ПК в домене Windows сервераутентификации - это контроллер домена (основной контроллер домена или PDC в доменах под управлением Windows NT 4).% USERPROFILE%
NTUSER
). Пользователи могут также использовать переменную % USERNAME%
для определения системы входа в систему активных пользователей.Дополнительные системные переменные не указаны явно по умолчанию, но стандартные инструкции для изменения поведения по умолчанию стандартной консоли команды. Эти переменные также не нужно явно указывать в качестве аргументов командной строки.
В следующих таблицах показаны типичные значения по умолчанию для чисел среды в английских версиях Windows, поскольку они могут быть получены с помощью CMD
.
( Некоторые из этих переменных такжеопределяются при запуске COMMAND.COM
под Windows, но некоторыми важными деталями: В COMMAND.COM
имена среды всегда в регистре. содержат короткие 8.3, а не длинные имена файлов. Хотя некоторые переменные, присутствующие в среде CMD
, отсутствуют, есть также некоторые переменные, специфичные для КОМАНДА.
среда.)
Переменная | Зависит от локали | Windows XP (CMD) | Windows Vista и новее (CMD) |
---|---|---|---|
%ALLUSERSPROFILE% | Да | C: \ Documents and Settings \ All Users | C:\ProgramData |
%APPDATA% | Да | C: \ Documents and Settings \ {имя пользователя} \ Данные приложения | C: \ Users \ {имя пользователя} \ AppData \ Roa ming |
% CommonProgramFiles% | Да | C: \ Program Files \ Common Files | C: \ Program Files \ Common Files |
% CommonProgramFiles (x86)% | Да | C: \ Program Files (x86) \ Common Files (тольков 64 -битной версии) | C: \ Program Files (x86) \ Common Files (только в 64-битной версии) |
% CommonProgramW6432% | Да | % CommonProgramW6432% (не поддерживается, не заменяется никаким значением) | C: \ Program Files \ Common Files (только в 64-битной версии) |
% COMPUTERNAME% | Нет | {computername } | {computername} |
% ComSpec% | Нет | C: \ Windows \ System32 \ cmd.exe | C: \ Windows \ System32 \ cmd.exe |
%HOMEDRIVE% | Нет | C: | C: |
%HOMEPATH% | Да | \ Documents and Settings \ {имя пользователя} | \ Users \ {имя пользователя} |
% LOCALAPPDATA% | Да | % LOCALAPPDATA% ( не поддерживается, не заменяется никаким значением) | C: \ Users \ {username} \ AppData \ Local |
% LOGONSERVER% | Нет | \\ {domain_logon_server} | \\ {сервер_логона_домена} |
% PATH% | Да | C: \ Windows \ system32; C: \ Windows; C: \Windows \ System32 \ Wbem; {плюс пути к программам} | C: \ Windows \ system32; C: \ Windows; C: \ Windows \ System32 \ Wbem; {плюс пути к программам} |
% PATHEXT% | Нет | .COM;.ИСПОЛНЯЕМЫЙ;.ЛЕТУЧАЯ МЫШЬ;.CMD;.VBS;.VBE;.JS;.WSF;.WSH | .com;.исполняемый;.летучая мышь;.cmd;. vbs;.vbe;.js;.jse;.wsf;.wsh;.msc |
%ProgramData% | Да | % ProgramData% (не поддерживается, не заменяется никаким уровнем) | % SystemDrive% \ ProgramData |
%ProgramFiles% | Да | % SystemDrive% \ Program Files | % SystemDrive% \ Program Files |
% ProgramFiles (x86)% | Да | % SystemDrive% \ Program Files (x86) (только в 64-битной версии) | % SystemDrive% \ Program Files (x86) (только в 64-битной версии) |
% ProgramW6432% | Да | % ProgramW6432% (не поддерживается, не заменяется никаким значением) | % SystemDrive% \ Program Files (только в 64-битной версии) |
% PROMPT% | Нет | Код длятекущего формата командной строки, обычно $ P $ G | Код для текущего формата командной строки, обычно $ P $ G |
% PSModulePath% | % PSModulePath% (не поддерживается, не заменяется никаким уровнем) | % SystemRoot% \ system32 \ WindowsPowerShell \ v1.0 \ Modules \ | |
%PUBLIC% | Да | % PUBLIC% (не поддерживается, не заме няется никаким значением) | % SystemDrive% \ Users \ Public |
% SystemDrive% | Нет | C: | C: |
%SystemRoot% | Нет | Каталог Windows, обычно C: \ Windows, ранее C: \ WINNT | % SystemDrive% \ Windows |
% TEMP% и %TMP% | Да | % SystemDrive% \ Documents and Settings \ {username} \ Local Settings \ Temp | % SystemRoot% \ TEMP (для образов среды системы % TMP% и % TEMP%), % USERPROFILE% \ AppData \ Local \ Temp (для чисел среды пользователя % TMP% и % TEMP%) |
% USERDOMAIN% | Нет | {userdomain} | {userdomain} |
% USERNAME% | Нет | } | {имяпользователя} |
%USERPROFILE% | Да | % SystemDrive% \ Documents and Settings \ { имя пользователя} | % SystemDrive% \ Использовать rs \ {username} |
% windir% | Нет | % SystemDrive% \ WINDOWS | % SystemDrive% \ Windows |
В этом список нет переменных среды, которая указана в каталоге «Мои доку менты »пользователя, поэтому не существует стандартного метода для установки домашнего каталога программы в качестве каталога« Мои документы ».
Помимо истинных чисел среды, которые статически хранятся в среде до тех пор, пока не будут использоваться или удалены, существует ряд псевдо-среды для пакетной обработки. обработка.
Так называемые параметры или заменяемые параметры (терминология Microsoft / IBM), также известные как переменные замены (терминология Digital Research / Novell / Caldera) или параметры командного (терминология JP Software) %1
..%9
и % 0
можно использоватьдля защиты запроса пакетного задания, см. ПЕРЕМЕЩЕНИЕ
. В пакетных заданиях они могут быть получены так же, как переменные среды, но на самом деле они не хранятся в среде.
Некоторые процессоры командной строки (например, DR-DOS COMMAND.COM
, Многопользовательский DOS MDOS.COM
/TMP.EXE
(процесс сообщения терминала), программное обеспечение JP 4DOS, 4OS2, 4NT, Take Command и Windows cm d.exe ) поддерживает тип псевдо-среды, называемые переменными системной информации (терминология Novell / Caldera) или внутренними переменными (терминология JP Software), которые могут использоваться различных, возможно, динамических, но считываемых только информация о запущенной системе в пакетных заданиях. Возвращаемые значения представляют состояние системы на момент запроса этих чисел; то есть чтение их несколько раз подряд может вернуть разные значения даже в пределах одной команды; ихзапросы не имеют прямого воздействия на систему. Они не включены в систему извещений в SET и не существуют для извлечения внешними программами. Если определена истинная переменная среда с тем же именем, она имеет приоритет перед использованием до тех пор, пока переменная среда не будет снова удалена. Они не чувствительны к регистру. Хотя почти все такие переменные имеют префикс подчеркивания ("_
") в 4DOS и т. Д. По соглашению (например, %_SECOND%
), они не входятв DR -DOS COMMAND.COM
(например, %OS_VERSION%
).
Кроме того, 4DOS, 4OS2, 4NT и Take Command также ряд так Они работают так же, как внутренние переменные, но могут принимать необязательные параметры (например, % @ EVAL%
) и даже могут использовать статус системы в зависимости от своей функции.
Переменные системной информации, поддерживаемые DR-DOS COMMAND.COM
:
% AM_PM%
am
" или "pm
" в английской версии. Она похожа на переменную систему с таким же именем в Novell NetWare для входа в система ск рипты.% DAY%
01
".. "31
". См. Также аналогичную псевдопеременную %_DAY%
. Она напоминает идентично названную переменную систему в сценарии входа всистему Novell NetWare.% DAY_OF_WEEK%
Вс
», «Пн
», «Вт
», «Ср
», «Чт
», «Пт
» или «Сб
» в английской версии. Система похожа на переменную систему входа в систему Novell NetWare.% ERRORLEVEL%
COMMAND.COM
DR-DOS 7.02 и вышеэта псевдопеременная возвращает последний уровень, возвращенный внешней программой или командой RETURN
, например "0
".. "255
". См. Также псевдопеременную с таким же именем %ERRORLEVEL%
в Windows и условную команду IF ERRORLEVEL
.% ERRORLVL%
000
".. "255
". ВМногопользовательской DOS это настоящая оболочка среды, которая автоматически обновляется до кода возврата завершающихся программ. См. Также связанную псевдопеременную %ERRORLEVEL%
в DR-DOS и команду IF ERRORLEVEL
.% GREETING_TIME%
утро
», «полдень
» или «вечер
»в английской версии. Она похожа на переменную систему отображения с таким же именем в Novell NetWare сценариях входа в систему.% HOUR%
1
".. "12
". Она похожа на переменную систему представления с таким именем в сценариях входа в Novell NetWare.% HOUR24%
00
".. "23
". Он похож на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare. См. Также аналогичную псевдопеременную % _HOUR%
.% MINUTE%
00
".." 59
". Он похож на переменную идентификатора с таким же именем в сценариях входа в систему Novell Net Ware. См. Также аналогичную псевдопеременную % _MINUTE%
.% MONTH%
01
".. "12
". Он похож на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare. См. Также аналогичную псевдопеременную % _MONTH%
.% MONTH_NAME%
январь
», «февраль
», «март
», «апрель
», «май
», «июнь
», «июль
», «август
», «сентябрь
», «октябрь
», или «декабрь
» в английской версии. Она похожа на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare.% NDAY_OF_WEEK%
1
».. «7
» (с «1
» для воскресенья). Она похожа на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare.% OS_VERSION%
% ВЕР%
. Если % VER%
не определен, % OS_VERSION%
возвращает «off
». Она похожа на переменную идентификаторас таким же именем в сценариях входа в систему Novell NetWare, которые могут возвращать версии также для версий DOS, отличных от DR-DOS.% SECOND%
00
".. "59
". Он похож на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare. См. Также аналогичную псевдопеременную % _SECOND%
.% SHORT_YEAR%
93
".. "99
", "00
".. "92
". Он похож на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare.% YEAR%
и % _YEAR%
% YEAR%
возвращает год текущей даты в 4-значном формате, например "1980
".. "2099
". Он похож на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare. DR-DOS 7.02 и выше добавил % _YEAR%
для совместимости с 4DOS, возвращая то же значение.% /%
COMMAND.COM
DR-DOS 7.02 и выше, эта псевдопеременная возвращает текущую настройку системы SwitChar, либо «/
» (стиль DOS), либо «- <354.>"(Стиль Unix). См. Также связанную директиву CONFIG.SYS
SWITCHAR ипеременную среды % SWITCHAR%
.
% _CODEPAGE%
1
".." 65533
"), fe" 437
"," 850
"," 858
". Эта переменная была первоначально введена в 4DOS, но также стала доступна в COMMAND.COM
начиная с DR-DOS 7.02. См. также команду CHCP
.% _COLUMNS%
40
», «80
», «132
» и т. д. Эта переменная была первоначально введена в 4DOS, но также стал доступен с COMMAND.COM
, начиная с DR-DOS 7.02. См. также аналогичную переменную среды %$WIDTH%
в DOS Plus.% _COUNTRY%
1
".." 65534
") системы, например «1
» для США, «44
»для Великобритании, «49
» для Германии, «20049
» с ISO 8601, «21049
» с поддержкой ISO 8601 и Euro. Эта переменная была первоначально введена в 4DOS, но также стала доступна в COMMAND.COM
, начиная с DR-DOS 7.02. См. Также директиву CONFIG.SYS
COUNTRY
.% _DAY%
1
".. "31
". Эта переменная былапервоначально введена в 4DOS, но также стала доступна в COMMAND.COM
, начиная с DR-DOS 7.02. См. Также аналогичную псевдопеременную % DAY%
.% _HOUR%
0
".. "23
". Эта перемен ная была первоначально введена в 4DOS, но также стала доступна в COMMAND.COM
, начиная с DR-DOS 7.02. См. Также аналогичнуюпсевдопеременную % HOUR24%
.% _MINUTE%
0
".. "59
". Эта переменная была первоначально введена в 4DOS, но также стала доступна в COMMAND.COM
, начиная с DR-DOS 7.02. См. Также аналогичную псевдопеременную % MINUTE%
.% _MONTH%
1
".. "12
". Эта переменная была первоначально введена в 4DOS, но также стала доступна в COMMAND.COM
, начиная с DR-DOS 7.02. См. Также аналогичную псевдопеременную % MONTH%
.% _ROWS%
25
», «43
», «50
» и т. Д. Эта переменная была первоначально введена в 4DOS, но также стала доступна с COMMAND.COM
начиная с DR-DOS 7.02. См. Аналогичную переменную среды %$LENGTH%
в DOS Plus.% _SECOND%
0
".. "59
". Эта переменная была первоначально введена в 4DOS, но также стала доступна в COMMAND.COM
, начиная с DR-DOS 7.02. См. Также аналогичную псевдопеременную % SECOND%
.Переменные системной информации, поддерживаемые DR-DOS COMMAND.COM
с загруженной сетью:
% LOGIN_NAME%
NETX
, но это также будет работать с Personal NetWare ODI / VLM, если текущий диск - это диск с отображением PNW (в противном случае возвращается пустая строка). См. Также переменную среды с аналогичным названием % LOGINNAME%
.% P_STATION%
????????? ???
". Значение зависит от MAC-адреса сетевого адаптера, но может быть изменено. Она похожа на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare.% STATION%
1
» для первый клиент. Номера назначаются файловым сервером и остаются неизменными до тех пор, пока установлено соединение IPX. Она напоминает переменнуюидентификатора с таким же именем в сценариях входа в систему Novell NetWare.% FULL_NAME%
% LOGIN_NAME%
.Динамические переменные среды (также называемые внутренними переменными или переменными системнойинформации в DOS) являются переменны ми псевдо-среды, поддерживаемыми CMD
, когда расширения командной строки включены, и они расширяются до различных дискретных значений при каждом запросе, то есть их значения могут изменяться при многократном запросе даже в рамках одной и той же команды. Хотя их можно использовать в пакетных заданиях и по запросу, они не хранятся в среде. Следовательно, они не перечислены в SET
и не существуют для чтения внешними программами. Онине чувствительны к регистру.
Косвенно они также поддерживаются в Windows COMMAND.COM
, который был изменен на внутренний вызов CMD.EXE
для выполнения команд.
% CD%
CD
при вызове без аргументов. Хотя длинное имя файла может быть возвращено в CMD.EXE
в зависимости от текущего каталога, тот факт, что текущий каталог всегда будет в формате 8.3 вCOMMAND.COM
заставит его вернуть короткое имя файла в COMMAND.COM
, даже если COMMAND
внутренне вызывает CMD
.% CMDCMDLINE%
CMD.EXE
, fe "C: \ Windows \ system32 \ cmd.exe
". В Windows COMMAND.COM
это может возвращать что-то вроде "C: \ Windows \ system32 \ cmd.exe / c...
" из-за того, что COMMAND.COM
вызывает CMD.EXE
внутри.% CMDEXTVERSION%
CMD.EXE
, если включено (например, «1
» в Windows NT, «2
» в Windows 2000 и Windows XP ).% DATE%
% ERRORLEVEL%
0
» и «255
» (без начальных нулей). Внешние команды и некоторые внутренние команды устанавливают уровни ошибок после выполнения. См. также псевдопеременную с таким же именем %ERRORLEVEL%
в DR-DOS и команду IF ERRORLEVEL
.% RANDOM%
0
» до «32767
".% TIME%
% TIME%
и %DATE%
, важно прочитать их обе в этом конкретном порядке в быстрой последовательности, чтобы избежать проблемы с переключением в полночь.environ(7)
: пользовательская среда - Linux Руководство программиста - Обзор, условные обозначения и прочееEnvironment (7)
– FreeBSD Дополнительная информация Руководство Environment (7)
– Darwin и macOS Дополнительная информация Руководство Environment (5)
– Solaris 10 Справочник по стандартам, средам и макросам Руководство