Из Википедии, свободной энциклопедии
  (Перенаправлено из переменной псевдо-окружения )
Перейти к навигации Перейти к поиску

Переменная среды является динамическим именем значение , которое может повлиять на то , запущенные процессы будут вести себя на компьютере. Они являются частью среды, в которой выполняется процесс. Например, запущенный процесс может запросить значение переменной среды 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 <command>обозначение. Запущенная программа может получить доступ к значениям переменных среды для целей конфигурации.

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

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

В Unix, переменные окружения обычно инициализируется при загрузке системы с помощью системы INIT сценариев запуска , и , следовательно , наследуется всеми другими процессами в системе. Пользователи могут, и часто делают, дополнять их в сценарии профиля для командной оболочки, которую они используют. В Microsoft Windows значение по умолчанию каждой переменной среды хранится в реестре Windows или задается в AUTOEXEC.BATфайле.

На Unix , УИП программа дается окружение , выбранное вызывающим, но она работает с различными полномочиями от вызывающего. Динамический компоновщик обычно загружать код из мест , указанных переменной среды $LD_LIBRARY_PATHи $LD_PRELOADи запустить его с властью процесса. Если бы это делала программа setuid, это было бы небезопасно, потому что вызывающая программа могла заставить ее запустить произвольный код и, следовательно, злоупотребить своими полномочиями. По этой причине libc сбрасывает эти переменные среды при запуске процесса setuid. Программы setuid обычно сбрасывают неизвестные переменные среды и проверяют другие или устанавливают для них разумные значения.

Синтаксис [ править ]

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

echo  $ HOME

В интерпретаторах командной строки DOS, OS / 2 и Windows, таких как COMMAND.COMи cmd.exe, пользователь должен ввести следующее:

ЭХО  % ДОМАШНИЙ%

В Windows PowerShell пользователь должен ввести следующее:

Запись-вывод  $ env: HOMEPATH

Команды env, setи printenvотображают все переменные среды и их значения. printenvтакже можно использовать для печати одной переменной, задав это имя переменной в качестве единственного аргумента команды.

Назначение [ править ]

Команды envи setтакже используются для установки переменных среды и часто включаются непосредственно в оболочку.

Unix [ править ]

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

ПЕРЕМЕННАЯ = значение #экспорт ПЕРЕМЕННОЙ # для Bourne и связанных оболочек
export VARIABLE = value # для ksh , bash и связанных оболочек
setenv VARIABLE  value # для csh и связанных оболочек

Несколько простых принципов определяют, как переменные среды достигают своего эффекта.

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

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

В Unix и Unix-подобных системах имена переменных среды чувствительны к регистру.

В оболочках Unix переменные можно назначать без exportключевого слова. Переменные, определенные таким образом, отображаются setкомандой, но не являются истинными переменными среды, поскольку они хранятся только оболочкой и неизвестны всем остальным процессам. Команда printenvне будет их отображать, и дочерние процессы не наследуют их.

ПЕРЕМЕННАЯ = значение

Синтаксис префикса экспортирует "истинную" переменную среды в дочерний процесс, не влияя на текущий процесс: [1]

ПЕРЕМЕННАЯ = значение имя_программы [аргументы]

Постоянство переменной среды может быть общесессионным или общесистемным.

unset - это встроенная команда, реализованная как семейством оболочки Bourne (sh, ksh, bash и т. д.), так и семейством оболочки C (csh, tcsh и т. д.) оболочек командной строки Unix . Он сбрасывает переменную оболочки, удаляя ее из памяти и экспортированной среды оболочки. Он реализован как встроенная оболочка , поскольку напрямую управляет внутренними компонентами оболочки. [2] [3] Переменные оболочки, доступные только для чтения, не могут быть сброшены. Если кто-то пытается отключить переменную, доступную только для чтения, команда unset распечатает сообщение об ошибке и вернет ненулевой код выхода.

DOS, OS / 2 и Windows [ править ]

В интерпретаторах командной строки DOS, OS / 2 и Windows, таких как COMMAND.COMи cmd.exe, SETкоманда используется для назначения переменных и значений среды с использованием следующих аргументов:

УСТАНОВИТЬ ПЕРЕМЕННУЮ = значение

Команда SETбез аргументов отображает все переменные среды вместе с их значениями.

Примеры [ править ]

Примеры переменных среды:

  • PATH: список путей к каталогам. Когда пользователь вводит команду без указания полного пути, этот список проверяется, чтобы увидеть, содержит ли он путь, ведущий к команде.
  • HOME( Unix-like ) и USERPROFILE(Microsoft Windows): указывают, где в файловой системе находится домашний каталог пользователя .
  • HOME/{.AppName}( Unix-like ) и APPDATA\{DeveloperName\AppName}(Microsoft Windows): для хранения настроек приложения. Многие приложения неправильно используют USERPROFILEнастройки приложений в Windows: USERPROFILEследует использовать только в диалоговых окнах, которые позволяют пользователю выбирать между путями, например Documents/Pictures/Downloads/Music; для программных целей APPDATA(для настроек перемещаемого приложения, совместно используемых на нескольких устройствах), LOCALAPPDATA(для настроек локального приложения) или PROGRAMDATA(для настроек приложения, совместно используемых несколькими пользователями ОС). [4]
  • TERM( Unix-like ): указывает тип используемого компьютерного терминала или эмулятора терминала (например, vt100или dumb).
  • PS1( Unix-like ): указывает, как приглашение отображается в оболочке Bourne и в вариантах.
  • MAIL( Unix-like ): используется, чтобы указать, где находится почта пользователя.
  • TEMP: место, где процессы могут хранить временные файлы.

Истинные переменные среды [ править ]

Unix [ править ]

$PATH
Содержит список каталогов, разделенных двоеточиями, в которых оболочка ищет команды, в имени которых нет косой черты (команды с косой чертой интерпретируются как имена файлов для выполнения, и оболочка пытается выполнить файлы напрямую). Это эквивалент переменной DOS , OS / 2 и Windows %PATH% .
$HOME
Содержит расположение домашнего каталога пользователя . Хотя домашний каталог текущего пользователя также можно узнать с помощью C-функций getpwuidи getuid, $HOMEон часто используется для удобства в различных сценариях оболочки (и других контекстах). Использование переменной среды также дает пользователю возможность указать на другой каталог.
$PWD
Эта переменная указывает на текущий каталог. Эквивалентно выводу команды pwd при вызове без аргументов.
$DISPLAY
Содержит идентификатор дисплея, который программы X11 должны использовать по умолчанию.
$LD_LIBRARY_PATH
Во многих системах Unix с динамическим компоновщиком содержит список каталогов, разделенных двоеточиями, в которых динамический компоновщик должен искать общие объекты при построении образа процесса после exec, перед поиском в любых других каталогах.
$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
Содержит разделенный двоеточиями список предпочтений веб-браузера пользователя для использования программами, которым необходимо разрешить пользователю просматривать контент по URL-адресу . Предполагается, что браузеры в списке будут выполняться от первого до последнего, останавливаясь после первого успешного. Такая компоновка допускает резервное поведение в различных средах, например, в среде X11 можно использовать графический браузер (такой как Firefox ), но в консольной среде можно использовать браузер терминальной базы (такой как Lynx ). %sМаркер может присутствовать , чтобы указать , где URL - адрес должен быть помещен; в противном случае браузер должен запускаться с URL-адресом в качестве первого аргумента. [5] [6] [7] [8][9]


DOS [ править ]

В DOS основная среда предоставляется основным командным процессором, который наследует предварительную среду, определенную CONFIG.SYSпри первой загрузке. Его размер можно настроить с помощью COMMAND /E:nпараметра от 160 [10] до 32767 [10] байтов. Сегменты локальной среды, унаследованные от дочерних процессов, обычно уменьшаются до размера содержимого, которое они содержат. Некоторые процессоры командной строки (например, 4DOS ) позволяют определить минимальный объем свободного пространства среды, которое будет доступно при запуске вторичных оболочек. [10] Хотя содержимое переменных среды остается неизменным при хранении, их имена (без "%") всегда преобразуются в верхний регистр, за исключением переменных среды, определенных с помощью CONFIG.SYSдирективы SETв DR DOS 6.0 и выше [11] [12] (и только с SWITCHES=/L(для" разрешить имена в нижнем регистре ") в DR-DOS 7.02 и выше). [10] [13] В принципе, MS-DOS 7.0 и выше также поддерживает имена переменных в нижнем регистре ( %windir%), но не предоставляет пользователю средств для их определения. Имена переменных среды, содержащие буквы нижнего регистра, хранятся в среде точно так же, как обычные переменные среды, но остаются невидимыми для большинства программ DOS, так как они написаны так, чтобы ожидать переменные только в верхнем регистре. [10][11] [12] Некоторые командные процессоры ограничивают максимальную длину имени переменной 80 символами. [10] Хотя в основном ограничены только размером сегмента среды , некоторые DOS и 16-разрядные программы Windows [10] [nb 1] не ожидают, что содержимое переменных среды превысит 128 символов. DR-DOSCOMMAND.COMподдерживает переменные среды до 255, 4DOS даже до 512 символов. [10] ПосколькуCOMMAND.COMможно настроить (через/L:128..1024) для внутренней поддержки командных строк до 1024 символов в MS-DOS 7.0 и выше, переменные среды также должны содержать не менее 1024 символов. В некоторых версиях DR-DOS среда, передаваемая драйверам, которым часто не нужна их среда после установки, может быть уменьшена или перемещена с помощью SETENVили INSTALL[HIGH]/ LOADHIGHoptions /Z(нулевая среда), (заменить диск, например ) и (переместить среду над программой ), чтобы свести к минимуму фактически получаемый драйвером объем резидентной памяти. [14] [13] [11] [15] [16] [17]/D[:loaddrive]B:TSR.COM/E

В пакетном режиме несуществующие переменные среды заменяются строкой нулевой длины.

Стандартные переменные среды или зарезервированные переменные среды включают:

%APPEND% (поддерживается с DOS 3.3)
Эта переменная содержит разделенный точкой с запятой список каталогов, в которых следует искать файлы. Обычно его изменяют с помощью APPEND /Eкоманды, которая также обеспечивает преобразование имен каталогов в верхний регистр. Некоторое программное обеспечение DOS фактически ожидает, что имена будут храниться в верхнем регистре, а длина списка не будет превышать 121 [10] символа, поэтому переменную лучше не изменять с помощью SETкоманды. Длинные имена файлов, содержащие пробелы или другие специальные символы, не должны заключаться в кавычки ( ").
%CONFIG%(поддерживается начиная с MS-DOS 6.0 и PC DOS 6.1 , также поддерживается ROM-DOS [18] )
Эта переменная содержит символическое имя выбранной в данный момент конфигурации загрузки. В BIOS DOS ( IO.SYS, IBMBIO.COMи т. Д.) Ему присваивается имя, определенное соответствующей CONFIG.SYSдирективой MENUITEMперед запуском основного командного процессора. Его основная цель - разрешить другие особые случаи AUTOEXEC.BATи аналогичные пакетные задания в зависимости от выбранной опции во время загрузки. Это можно эмулировать в DR-DOS с помощью CONFIG.SYSдирективы SETвроде SET CONFIG=1.
%CMDLINE%(введено в 4DOS , также поддерживается с MS-DOS 7.0 )
Эта переменная содержит полностью развернутый текст выполняющейся в данный момент командной строки. Его могут читать приложения, чтобы обнаруживать использование и извлекать длинные командные строки, поскольку традиционный метод извлечения аргументов командной строки через PSP (или связанные функции API ) ограничен 126 символами и больше не доступен, когда FCB расширяются. или используется DTA по умолчанию . Хотя 4DOS поддерживает более длинные командные строки, по- COMMAND.COMпрежнему поддерживает максимум 126 символов в приглашении по умолчанию (если не переопределено с помощью /U:128..255для указания размера буфера командной строки), но, тем не менее, внутренние командные строки могут стать длиннее из-за расширения переменной fe (в зависимости от/L:128..1024чтобы указать размер внутреннего буфера). В дополнение к байту длины командной строки в PSP, командная строка PSP обычно ограничивается ASCII-13 , а командные строки длиной более 126 символов обычно усекаются путем вставки ASCII-13 в позицию 127, [12] но нельзя полагаться на это во всех сценариях. [12] [nb 2] Переменная будет подавлена ​​для внешних команд, вызываемых с предшествующим @символом, как в, @XCOPY ...для обратной совместимости и для минимизации размера среды при загрузке неперемещаемых TSR . Использовались некоторые бета-версии Microsoft Chicago%CMDLINE%для хранения только оставшейся части командной строки, превышающей 126 символов, вместо полной командной строки. [11] [12]
%COMSPEC% (поддерживается с DOS 2.0)
Эта переменная содержит полный путь 8.3 к командному процессору , обычно или . Он не должен содержать длинных имен файлов , но в DR-DOS он может содержать пароли файлов и каталогов. Он настраивается основным командным процессором так, чтобы указывать на себя (обычно это отражает настройки директивы ), так что резидентная часть командного процессора может перезагружать свою переходную часть с диска после выполнения более крупных программ. Значение можно изменить во время выполнения, чтобы отразить изменения в конфигурации, которые потребуют от командного процессора перезагрузки из других мест. Переменная также используется при запуске второстепенных снарядов.C:\COMMAND.COMC:\DOS\COMMAND.COMCONFIG.SYSSHELL
%COPYCMD%(поддерживается с MS-DOS 6.2 и PC DOS 6.3 , также поддерживается ROM-DOS [18] )
Позволяет пользователю указать /Yпереключатель (считать «Да» на запросы) по умолчанию для COPY, XCOPYи MOVEкоманд. Значение по умолчанию /Yможно изменить , указав /-Yпереключатель в командной строке. /YПереключатель инструктирует команду , чтобы заменить существующие файлы без запроса подтверждения.
%DIRCMD%(поддерживается, начиная с MS-DOS 5.0 и PC DOS 5.0 , также поддерживается ROM-DOS [18] )
Позволяет пользователю указать индивидуальные параметры по умолчанию для DIRкоманды, включая спецификации файлов. Предустановленные переключатели по умолчанию можно переопределить, указав отрицательный переключатель в командной строке. Например, если он %DIRCMD%содержит /Wпереключатель, его можно переопределить, используя DIR /-Wв командной строке. Это похоже на переменную среды %$DIR%в DOS Plus [19] и средство для определения переключателей по умолчанию для DIRсвоих переключателей /Cили /Rв DR-DOS COMMAND.COM . [11] %DIRCMD% также поддерживается командами external SDIR.COM/ DIR.COM Stacker в Novell DOS 7 и выше. [11]
%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в PC DOS. DR-DOS дополнительно позволяет переопределить системный разделитель тысяч, отображаемый, как в fe SET NO_SEP=.. [10]
%PATH% (поддерживается с DOS 2.0)
Эта переменная содержит список каталогов, разделенных точками с запятой, в которых интерпретатор команд будет искать исполняемые файлы . Эквивалентен $PATHпеременной Unix (но некоторые приложения DOS и Windows также используют этот список для поиска файлов данных, как в $LD_LIBRARY_PATHUnix-подобных системах). Обычно его можно изменить с помощью команды PATH(или PATH /Eв MS-DOS 6.0 ), которая также обеспечивает преобразование имен каталогов в верхний регистр. Некоторое программное обеспечение DOS фактически ожидает, что имена будут сохранены в верхнем регистре, а длина списка не будет превышать 123 [10] символов, [nb 1], поэтому переменную лучше не изменять с помощью SETкоманды. [10] Длинные имена файлов, содержащие пробелы или другие специальные символы, не должны заключаться в кавычки ( "). По умолчанию сначала выполняется поиск в текущем каталоге, но некоторые процессоры командной строки, такие как 4DOS, позволяют также .включать " " (для "текущего каталога") в список, чтобы переопределить этот порядок поиска; некоторые программы DOS несовместимы с этим расширением. [10]
%PROMPT% (поддерживается с DOS 2.0)
Эта переменная содержит $строку с символами, определяющую отображение подсказки . Обычно его меняют с помощью PROMPTкоманды.
%TEMP%%TMP%)
Эти переменные содержат путь к каталогу, в котором должны храниться временные файлы . Обычно используются только инструменты операционной системы %TEMP%, в то время как сторонние программы также используют %TMP%. Обычно %TEMP%имеет приоритет %TMP%.

Семейство DR-DOS поддерживает ряд дополнительных стандартных переменных среды, включая:

%BETA%
Эта переменная содержит необязательное сообщение, отображаемое некоторыми версиями (включая DR DOS 3.41 ) COMMAND.COMпри запуске вторичных оболочек. [20]
%DRDOSCFG%/ %NWDOSCFG%/%OPENDOSCFG%
Эта переменная содержит каталог [21] (без символа " \«) , где искать .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, EDIT, FBX, FILELINK, LOCK, SECURITY.OVL/ NWLOGIN.EXE, SERNO, TASKMAX, TASKMGR, VIEWMAX, или UNDELETE. [11] Он не должен содержать длинных имен файлов .
%DRCOMSPEC%
Эта переменная необязательно содержит альтернативный путь к командному процессору, имеющий приоритет над путем, определенным в %COMSPEC%переменной, необязательно включая пароли файлов и каталогов. В качестве альтернативы он может содержать специальное значение « ON» или « 1» для принудительного использования %COMSPEC%переменной даже в сценариях, где %COMSPEC%переменная может указывать на неправильный процессор командной строки, например, при запуске некоторых версий DR- SYSКоманда DOS под чужой операционной системой. [22]
%DRSYS%
Установка для этой переменной значения " ON" или " 1" заставит некоторые версии команды DR-DOS SYSработать в чужих операционных системах вместо отображения предупреждения. [22]
%FBP_USER%
Задает имя пользователя , используемое в фастбэк команды FBXи конфигурационные файлы под Novell DOS 7 . [11]{user}.FB
%HOMEDIR%
Эта переменная может содержать домашний каталог DR-DOS (включая DR DOS 5.0 и 6.0 ). [11] [20]
%INFO%
В некоторых версиях DR-DOS COMMAND.COMэта переменная определяет строку, отображаемую $Iтокеном PROMPTкоманды. [20] Его можно использовать, например, для информирования пользователя о том, как выйти из вторичных оболочек.
%LOGINNAME%
В некоторых версиях DR-DOS COMMAND.COMэта переменная определяет имя пользователя, отображаемое $Uтокеном PROMPTкоманды, как установлено, например, сценариями входа в систему для Novell NetWare . [10] [11] [20] См. Также псевдопеременную с аналогичным названием %LOGIN_NAME%.
%MDOS_EXEC%
Эта переменная может принимать значения " ON" или " OFF" в многопользовательской DOS . Если этот параметр включен, операционная система позволяет приложениям выполнять оболочку для вторичных оболочек с освобожденной программной областью DOS (DPA), чтобы иметь максимальную память DOS, доступную для дополнительных приложений, вместо того, чтобы запускать их в том же домене, что и под DOS. [23] [24]
%NOCHAR%
Эта переменная может использоваться для определения символа, отображаемого некоторыми командами в сообщениях для «Нет» в [Y,N]запросах, тем самым отменяя текущее значение по умолчанию в системе (обычно « N» в английских версиях DR-DOS). Если он содержит строку, будет взят только первый символ в верхнем регистре. Некоторые команды также поддерживают параметр командной строки, /Yчтобы автоматически принимать «Да» на запросы, тем самым подавляя такие запросы. Однако, если параметр /Y:ynиспользуется для указания символов «Да» / «Нет» (тем самым отменяя любые %NOCHAR%настройки), запросы не подавляются. См. Также соответствующую CONFIG.SYSдирективу NOCHARи переменную окружения %YESCHAR%. [22]
%NOSOUND%
Установка для этой переменной значения " ON" или " 1" отключит звуковые сигналы по умолчанию, выдаваемые некоторыми командами DR-DOS в определенных ситуациях, например, для информирования пользователя о завершении некоторой операции, о том, что требуется взаимодействие с пользователем или когда была нажата неправильная клавиша. Параметры командной строки для включения определенных звуковых сигналов имеют приоритет над этим параметром.
%OS%
Эта переменная содержит имя операционной системы, чтобы различать различные связанные с DOS операционные системы Digital Research -origin в пакетных заданиях и приложениях. [21] Известные значения включают " 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 [21] - 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" ( Многопользовательская DOS DR ), " MDOS" ( Многопользовательская DOS CCI ), [23] " IMSMDOS" ( Многопользовательская DOS IMS ), " REAL32" ( REAL / 32 ). [11] [25] MS-DOS также INTERSVRищет значение " DRDOS".[25]См. Также переменную среды с таким же именем, %OS%представленную позже в семействе Windows NT .
%PEXEC%
В некоторых версиях DR-DOS эта переменная определяет команду, выполняемую $Xтокеном PROMPTкоманды до COMMAND.COMотображения подсказки после возврата из выполнения внешней программы. [11] [21]
%SWITCHAR%
Эта переменная определяет SwitChar, который будет использоваться для синтаксического анализа аргументов некоторыми командами DR-DOS. Если он определен, он переопределяет текущую настройку SwitChar системы. Допускаются только символы « /» (стиль DOS), « -» (стиль Unix) и « [» (стиль CP / M). См. Также соответствующую CONFIG.SYSдирективу SWITCHAR(для установки системного параметра SwitChar) и %/% переменную системной информации в некоторых выпусках DR-DOS COMMAND.COM(для получения текущего параметра для переносимых пакетных заданий).
%TASKMGRWINDIR%
Эта переменная определяет каталог, в котором находится Windows, SYSTEM.INI которая будет использоваться TASKMGRмногозадачным DR-DOS , отменяя процедуру по умолчанию для поиска файла. [11]
%VER%
Эта переменная содержит версию операционной системы, чтобы различать разные версии DR-DOS в пакетных заданиях и при отображении VERкоманды. [21] Он также используется для $Vтокена PROMPTкоманды и влияет на значение, возвращаемое переменной системной информации %OS_VERSION% . Известные значения включают " 1.0" ( PalmDOS 1.0 ), " 1.2" ( DOS Plus 1.2 в эмуляции DOS), " 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"( параллельный ПК 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 ), [23] " 7.22" ( CCI Multiuser DOS 7.22 ) и т. Д. [11] [25] [23]
%YESCHAR%
Эту переменную можно использовать для определения символа, отображаемого некоторыми командами в сообщениях для «Да» в [Y,N]запросах, тем самым отменяя текущие системные значения по умолчанию (обычно « Y» в английских версиях DR-DOS). Если он содержит строку, будет взят только первый символ в верхнем регистре. Некоторые команды также поддерживают параметр командной строки, /Yчтобы автоматически принимать «Да» на запросы, тем самым подавляя такие запросы. Если, однако, параметр /Y:yиспользуется для указания символа «Да» (тем самым отменяя любую %YESCHAR%настройку), запросы не подавляются. См. Также соответствующую CONFIG.SYSдирективу YESCHARи переменную окружения %NOCHAR%. [22]
%$CLS%
Эта переменная определяет управляющую последовательность для отправки на драйвер консоли , чтобы очистить экран , когда CLSвыдается команда, тем самым перекрывая внутреннее значение по умолчанию ( « ←[2J„под DR-DOS“ ←E» под DOS Plus 1.2 на машинах Amstrad [19] , а также как в Concurrent DOS , Multiuser DOS и REAL / 32 для терминалов VT52 или " ←+" в Multiuser DOS для терминалов ASCII ). [23] Если переменная не определена и ANSI.SYSдрайвер консоли не обнаружен, DR-DOS COMMAND.COMочистит экран напрямую через функцию INT 10h/AH=00h BIOS , например MS-DOS / PC DOS.COMMAND.COMделает. \nnnПоддерживается специальная нотация для восьмеричных чисел , позволяющая определять специальные символы, такие как ESC ( ASCII-27 = "←" = 1Bh = 33o), например, в SET $CLS=\033[2J. Чтобы отправить \саму обратную косую черту (" "), ее можно удвоить " \\". [11] [20] [23]
%$DIR%
Поддерживается DOS Plus, принимая значения «L» (длинный) или «W» (широкий), чтобы изменить расположение списков каталогов по умолчанию с помощью DIR . Может быть переопределено с помощью параметров командной строки /Lили /W. [20] [19] См также аналогичная переменная окружения %DIRCMD%и DIRварианты /Cи /Rв DR-DOS COMMAND.COM. [11]
%$PAGE%
Поддерживается DOS Plus, принимающим значения " ON" или " OFF" для управления разбивкой на страницы. Установка этого параметра на " ON" имеет тот же эффект, что и добавление /Pк поддерживающим его командам (например, DIR или TYPE ). [20] [19]
%$LENGTH%
Используется DOS Plus для определения длины экрана консоли в строках. Это используется для портативного управления, когда вывод на экран должен быть временно остановлен до тех пор, пока не будет нажата клавиша в сочетании с /Pопцией, поддерживаемой различными командами, или с автоматической разбивкой на страницы. [20] [19] См. Также связанные переменные среды %$WIDTH%и %DIRSIZE%аналогичную псевдопеременную %_ROWS%.
%$WIDTH%
Используется DOS Plus для определения ширины экрана консоли в столбцах. Это используется для портативного управления форматированием вывода на экран таких команд, как DIR /Wили TYPE filename. [20] [19] См. Также связанные переменные среды %$LENGTH%и %DIRSIZE%аналогичную псевдопеременную %_COLUMNS%.
%$SLICE%
Используется DOS Plus, принимая числовое значение для управления временным интервалом переднего плана / фона многозадачных программ. [20] [19] См. Также команду DOS Plus SLICE.
%$ON%
Эта переменная может содержать необязательную управляющую последовательность для включения выделения, реверсирования или раскрашивания текста. Он используется для выделения или иного управления отображением имен файлов в командах TYPE wildcard, например, SET $ON=\033[1mпри загруженном ANSI.SYS или SET $ON=\016для принтера IBM или ESC / P. О \nnnподдерживаемых специальных восьмеричных обозначениях см %$CLS%. [11] [19] В то время как переменная по умолчанию не определена в DOS Plus и DR-DOS, многопользовательская DOS по умолчанию для терминала ASCII равна SET $ON=\033p. [20] [23] См. Также связанную переменную среды %$OFF%.
%$OFF%
Эта переменная может содержать необязательную управляющую последовательность для отключения выделения, реверсии или раскрашивания текста. Он используется для возврата к нормальному выводу после отображения имен файлов в таких командах, как TYPE wildcard, например, SET $OFF=\033[0mпри загруженном ANSI.SYS или SET $OFF=\024для принтера IBM или ESC / P. О \nnnподдерживаемых специальных восьмеричных обозначениях см %$CLS%. [11] [19] В то время как переменная по умолчанию не определена в DOS Plus и DR-DOS, многопользовательская DOS по умолчанию для терминала ASCII равна SET $OFF=\033q. [20] [23] См. Также связанную переменную среды %$ON%.
%$HEADER%
Эта переменная может содержать необязательную управляющую последовательность, выдаваемую перед выводом содержимого файла в командах, как TYPEв DR-DOS 7.02 и выше. Он может быть использован для выделения, пагинации или форматирования, Ого при отправке вывода на принтер, то есть SET $HEADER=\017для IBM или ESC / P принтер. О \nnnподдерживаемых специальных восьмеричных обозначениях см %$CLS%. [20] См. Также соответствующую переменную среды %$FOOTER%.
%$FOOTER%
Эта переменная может содержать необязательную управляющую последовательность, выдаваемую после вывода содержимого файла в командах, как TYPEв DR-DOS 7.02 и выше. Он используется для возврата к нормальному формату вывода, то есть SET $FOOTER=\022\014в примере с принтером выше. О \nnnподдерживаемых специальных восьмеричных обозначениях см %$CLS%. [20] См. Также соответствующую переменную среды %$HEADER%.

Datalight ROM-DOS также поддерживает ряд дополнительных стандартных переменных среды, включая:

%DIRSIZE%
Эта переменная используется для определения строк [, столбцов] нестандартных размеров экрана для DIRпараметров / P и / W (аналогично %$LENGTH%и %$WIDTH%под DOS Plus). [18]
%NEWFILE%
Эта переменная автоматически устанавливается на первый параметр, указанный в директиве NEWFILE CONFIG.SYS . [18]

%TZ%, %COMM%, %SOCKETS%, %HTTP_DIR%, %HOSTNAME%И %FTPDIR%также используются ROM-DOS. [18]

OS / 2 [ править ]

%BEGINLIBPATH%
Содержит список каталогов, разделенных точкой с запятой, в которых выполняется поиск библиотек DLL перед каталогами, заданными %LIBPATH%переменной (которая устанавливается при запуске системы с помощью специальной директивы CONFIG.SYSLIBPATH ). Здесь можно указать относительные каталоги, включая " ." для текущего рабочего каталога. См. Также соответствующую переменную среды %ENDLIBPATH%.
%ENDLIBPATH%
список каталогов , в которых производится поиск библиотек DLL , как %BEGINLIBPATH%, но искал после списка каталогов %LIBPATH%.

Windows [ править ]

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

%APPDATA%
Содержит полный путь к каталогу Application Data вошедшего в систему пользователя. Не работает в Windows NT 4.0 SP6 UK.
%LOCALAPPDATA%
Эта переменная - временные файлы Applications . Его использование включает хранение тем рабочего стола , отчеты об ошибках Windows , кеширование и профили веб-браузеров.
%ComSpec%/%COMSPEC%
%ComSpec%Переменная содержит полный путь к командному процессору; на семействе Windows NT операционных систем, это cmd.exe , в то время как на Windows 9x , %COMSPEC%является COMMAND.COM .
%OS%
%OS%Переменная содержит символическое имя семейства операционной системы , чтобы различать между различными наборами функций в batchjobs . Он напоминает переменную среды с одинаковым именем, которая %OS%присутствует во всех связанных с DOS операционных системах Digital Research, таких как Concurrent DOS, Multiuser DOS , REAL / 32, DOS Plus , DR DOS , Novell DOS и OpenDOS. %OS%всегда содержит строку " Windows_NT" в семействе Windows NT . [26]
%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-битным (это вызвано перенаправлением 64-битной Windows-on-Windows ).
%CommonProgramFiles%
Эта переменная указывает на каталог Common Files . По умолчанию C:\Program Files\Common Filesв английской версии Windows установлено значение «».
%SystemDrive%
%SystemDrive%Переменный специальная общесистемная переменная среды находится на Windows NT и ее производные. Его значение - это диск, на котором был размещен системный каталог. В %SystemDrive%большинстве случаев значение равно " C:".
%SystemRoot%
%SystemRoot%Переменная специальная общесистемного переменная среды находится на семейства Windows NT операционных систем. Его значение - это расположение системного каталога, включая диск и путь. Диск такой же, как %SystemDrive%и путь по умолчанию при чистой установке, зависит от версии операционной системы. По умолчанию:
  • Windows XP и более новые версии используют " \WINDOWS".
  • Windows 2000 , NT 4.0 и NT 3.1 используют " \WINNT".
  • Windows NT 3.5 и NT 3.51 использует " \WINNT35".
  • Терминальный сервер Windows NT 4.0 использует " \WTSRV".
%windir%
Эта переменная указывает на каталог Windows . (В операционных системах семейства Windows NT он идентичен %SystemRoot%переменной). Windows 95 , Windows 98 и Windows ME по умолчанию устанавливаются в " C:\Windows". Для других версий Windows см. %SystemRoot%Запись выше.

Переменные управления пользователями [ необходима ссылка ] хранят информацию, относящуюся к ресурсам и настройкам, принадлежащим различным профилям пользователей в системе. Как правило, эти переменные не относятся к критическим системным ресурсам или расположениям, которые необходимы для работы ОС.

%ALLUSERSPROFILE%( %PROGRAMDATA%начиная с Windows Vista)
Эта переменная расширяется до полного пути к каталогу профиля « Все пользователи» . Этот профиль содержит ресурсы и настройки, которые используются всеми системными учетными записями. Сочетания ссылка скопированная на All Usersменю Пуска или настольных каталоги появится в каждом пользователе в меню Пуска или рабочем столе , соответственно.
%USERDOMAIN%
Имя рабочей группы или домена Windows, к которому принадлежит текущий пользователь. Связанная переменная %LOGONSERVER%,, содержит имя хоста сервера, который аутентифицировал учетные данные текущего пользователя (имя и пароль). Для домашних ПК и ПК в рабочей группе сервером аутентификации обычно является сам ПК. Для ПК в домене Windows сервер аутентификации является контроллером домена (основным контроллером домена или PDC в доменах под управлением Windows NT 4).
%USERPROFILE%
Специальная общесистемная переменная среды, встречающаяся в Windows NT и ее производных. Его значением является расположение каталога профиля текущего пользователя, в котором находится куст реестра HKCU этого пользователя ( NTUSER). Пользователи также могут использовать %USERNAME%переменную для определения идентификатора входа активного пользователя.

Необязательные системные переменные [ необходима цитата ] по умолчанию не указываются явно, но могут использоваться для изменения поведения по умолчанию некоторых встроенных консольных команд. Эти переменные также не нужно явно указывать в качестве аргументов командной строки.

Значения по умолчанию [ править ]

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

(Некоторые из этих переменных также определяются при работе COMMAND.COMпод Windows, но отличаются некоторыми важными деталями: в разделе COMMAND.COMимена переменных среды всегда пишутся в верхнем регистре. Некоторые, но не все переменные содержат короткие имена файлов 8.3, а не длинные . Хотя некоторые переменные присутствуют в CMDсреде отсутствуют, есть также некоторые переменные, специфичные для COMMANDсреды.)

В этом списке нет переменной среды, которая ссылается на расположение пользовательского каталога « Мои документы» , поэтому не существует стандартного метода для установки домашнего каталога программы в качестве каталога « Мои документы» .

Переменные псевдо-среды [ править ]

DOS [ править ]

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

Так называемые параметры замены или заменяемые параметры (терминология Microsoft / IBM), также известные как переменные замены ( терминология Digital Research / Novell / Caldera) [21] или параметры пакетного файла (терминология JP Software) [10] %1 .. %9и %0могут использоваться для получения параметры вызова пакетного задания, см SHIFT. В пакетных заданиях они могут быть получены так же, как переменные среды, но на самом деле они не сохраняются в среде.

Некоторые процессоры командной строки (например, DR-DOS COMMAND.COM , [21] Multiuser DOS MDOS.COM / TMP.EXE(Terminal Message Process), JP Software 4DOS , 4OS2 , 4NT , Take Command и Windows cmd.exe ) поддерживают тип переменных псевдосреды, называемых системной информацией. переменные (терминология Novell / Caldera) [21] или внутренние переменные (терминология JP Software), [10]который может использоваться для получения различной, возможно, динамической, но доступной только для чтения информации о работающей системе в пакетных заданиях. Возвращенные значения представляют состояние системы на момент запроса этих переменных; то есть чтение их несколько раз подряд может вернуть разные значения даже в пределах одной и той же команды; их запросы не имеют прямого воздействия на систему. Поскольку они не хранятся в среде, они не перечислены в SET и не существуют для извлечения внешними программами. Если определена истинная переменная среды с тем же именем, она имеет приоритет перед соответствующей переменной до тех пор, пока переменная среды не будет снова удалена. Они не чувствительны к регистру. Хотя почти все такие переменные имеют префикс подчеркивания ("_") 4DOS и т. д. по соглашению (fe %_SECOND%), [10] они не входят в DR-DOS COMMAND.COM(fe %OS_VERSION%).

Кроме того, 4DOS, 4OS2, 4NT и Take Command также поддерживают так называемые переменные функции , [10] , включая определяемые пользователем из них. Они работают так же, как внутренние переменные , но могут принимать необязательные параметры (например %@EVAL[]%) и даже изменять состояние системы в зависимости от своей функции.

Переменные системной информации, поддерживаемые DR-DOS COMMAND.COM:

%AM_PM%
Эта псевдопеременная возвращает статус текущего времени до или после полудня. Возвращаемая строка зависит от языковой версии DR-DOS, например " am" или " pm" в английской версии. Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%DAY%
Эта псевдопеременная возвращает дни текущей даты в 2-значном формате с ведущими нулями, например, " 01" .. " 31". См. Также аналогичную псевдопеременную %_DAY%. Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%DAY_OF_WEEK%
Эта псевдопеременная возвращает название дня недели в трехсимвольном формате. Возвращаемая строка зависит от языковой версии DR-DOS, например, " Sun", " Mon", " Tue", " Wed", " Thu", " Fri" или " Sat" в английской версии. Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%ERRORLEVEL%
В COMMAND.COMDR-DOS 7.02 и выше эта псевдопеременная возвращает последний уровень ошибки, возвращенный внешней программой или RETURNкомандой, например " 0" .. " 255". [28] [29] См. Также псевдопеременную с таким же именем %ERRORLEVEL%в Windows и IF ERRORLEVELусловную команду.
%ERRORLVL%
В DR-DOS 7.02 и выше эта псевдопеременная возвращает последний уровень ошибки в 3-значном формате с ведущими нулями, например, " 000" .. " 255". [28] [29] В многопользовательской DOS это настоящая переменная среды, которая автоматически обновляется оболочкой до кода возврата завершающихся программ. [23] См. Также соответствующую псевдопеременную %ERRORLEVEL%в DR-DOS и IF ERRORLEVELкоманду.
%GREETING_TIME%
Эта псевдопеременная возвращает трехуровневое дневное время приветствия. Возвращаемая строка зависит от языковой версии DR-DOS, например, " morning", " afternoon" или " evening" в английской версии. Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%HOUR%
Эта псевдопеременная возвращает часы текущего времени в 12-часовом формате без начальных нулей, например " 1" .. " 12". Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%HOUR24%
Эта псевдопеременная возвращает часы текущего времени в 24-часовом формате в 2-значном формате с ведущими нулями, например, " 00" .. " 23". Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare . См. Также аналогичную псевдопеременную %_HOUR%.
%MINUTE%
Эта псевдопеременная возвращает минуты текущего времени в 2-значном формате с ведущими нулями, например, " 00" .. " 59". Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare . См. Также аналогичную псевдопеременную %_MINUTE%.
%MONTH%
Эта псевдопеременная возвращает месяцы текущей даты в 2-значном формате с ведущими нулями, например, " 01" .. " 12". Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare . См. Также аналогичную псевдопеременную %_MONTH%.
%MONTH_NAME%
Эта псевдопеременная возвращает название месяца текущей даты. Возвращаемая строка зависит от версии DR-DOS, зависящей от локали, например, " January", " February", " March", " April", " May", " June", " July", " August", " September", " October" или " December" в английская версия. Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%NDAY_OF_WEEK%
Эта псевдопеременная возвращает номер дня текущей недели, например " 1" .. " 7" (с " 1" для воскресенья). Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%OS_VERSION%
Эта псевдопеременная возвращает версию операционной системы в зависимости от текущего значения переменной среды %VER%. Если %VER%не определено, %OS_VERSION%возвращает " off". Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare , которые могут возвращать версии также для версий DOS, не относящихся к DR-DOS.
%SECOND%
Эта псевдопеременная возвращает секунды текущего времени в 2-значном формате с ведущими нулями, например, " 00" .. " 59". Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare . См. Также аналогичную псевдопеременную %_SECOND%.
%SHORT_YEAR%
Эта псевдопеременная возвращает год текущей даты в 2-значном формате с ведущими нулями, например, " 93" .. " 99", " 00" .. " 92". Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%YEAR% и %_YEAR%
Псевдопеременная, поддерживаемая начиная с Novell DOS 7 , %YEAR%возвращает год текущей даты в 4-значном формате, например " 1980" .. " 2099". Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare . DR-DOS 7.02 и выше добавлены %_YEAR%для совместимости с 4DOS , возвращая то же значение. [10]
%/%
В COMMAND.COMDR-DOS 7.02 и выше эта псевдопеременная возвращает текущую настройку SwitChar системы, либо " /" (стиль DOS), либо " -" (стиль Unix). [30] [31] См. Также соответствующую CONFIG.SYSдирективу SWITCHAR и переменную окружения %SWITCHAR%.
%_CODEPAGE%
Эта псевдопеременная возвращает текущую кодовую страницу системы (" 1" .. " 65533"), например, " 437", " 850", " 858". Эта переменная была первоначально введена в 4DOS , [10], но также стала доступна с COMMAND.COMDR-DOS 7.02. См. Также CHCPкоманду.
%_COLUMNS%
Эта псевдопеременная возвращает текущее количество столбцов экрана в зависимости от режима отображения, например, " 40", " 80", " 132" и т. Д. Эта переменная была первоначально введена 4DOS , [10], но также стала доступна с COMMAND.COMDR-DOS 7.02. . См. Также аналогичную переменную среды %$WIDTH%в DOS Plus.
%_COUNTRY%
Это псевдо-переменная возвращает текущий систем код страны ( « 1„..“ 65534„), фе“ 1„для США“ , 44„для Великобритании“ , 49„в Германии,“ 20049„с ISO 8601 ,“ 21049» с ISO 8601 и Евро поддержки . Эта переменная была первоначально введена в 4DOS , [10], но также стала доступна с COMMAND.COMDR-DOS 7.02. См. Также CONFIG.SYSдирективу COUNTRY.
%_DAY%
Эта псевдопеременная возвращает дни текущей даты без начальных нулей, например " 1" .. " 31". Эта переменная была первоначально введена в 4DOS , [10], но также стала доступна с COMMAND.COMDR-DOS 7.02. См. Также аналогичную псевдопеременную %DAY%.
%_HOUR%
Эта псевдопеременная возвращает часы текущего времени в 24-часовом формате без начальных нулей, например " 0" .. " 23". Эта переменная была первоначально введена в 4DOS , [10], но также стала доступна с COMMAND.COMDR-DOS 7.02. См. Также аналогичную псевдопеременную %HOUR24%.
%_MINUTE%
Эта псевдопеременная возвращает минуты текущего времени без начальных нулей, например " 0" .. " 59". Эта переменная была первоначально введена в 4DOS , [10], но также стала доступна с COMMAND.COMDR-DOS 7.02. См. Также аналогичную псевдопеременную %MINUTE%.
%_MONTH%
Эта псевдопеременная возвращает месяцы текущей даты без начальных нулей, например " 1" .. " 12". Эта переменная была первоначально введена в 4DOS , [10], но также стала доступна с COMMAND.COMDR-DOS 7.02. См. Также аналогичную псевдопеременную %MONTH%.
%_ROWS%
Эта псевдопеременная возвращает текущее количество строк экрана в зависимости от режима отображения, например, " 25", " 43", " 50" и т. Д. Эта переменная была первоначально введена в 4DOS , [10], но также стала доступна с COMMAND.COMDR-DOS 7.02. . См. Аналогичную переменную среды %$LENGTH%в DOS Plus.
%_SECOND%
Эта псевдопеременная возвращает секунды текущего времени без начальных нулей, например " 0" .. " 59". Эта переменная была первоначально введена в 4DOS , [10], но также стала доступна с COMMAND.COMDR-DOS 7.02. См. Также аналогичную псевдопеременную %SECOND%.

Переменные системной информации, поддерживаемые DR-DOS COMMAND.COMс загруженной сетью:

%LOGIN_NAME%
Эта псевдопеременная возвращает имя пользователя. Это всегда работал с NETX, но она также будет работать с Personal NetWare «s ODI / VLM , если текущий диск является PNW отображенный диск ( в противном случае возвращается пустая строка). См. Также переменную среды с таким же названием %LOGINNAME%.
%P_STATION%
Эта псевдопеременная возвращает номер физической станции в формате " ????????????". Значение зависит от MAC-адреса сетевого адаптера, но может быть изменено. Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%STATION%
Эта псевдопеременная возвращает логический номер станции, начинающийся с " 1" для первого клиента. Номера назначаются файловым сервером и остаются неизменными, пока установлено соединение IPX . Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%FULL_NAME%
Эта псевдопеременная возвращает полное имя вошедшего в систему пользователя, если доступно. Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare . См. Также соответствующую псевдопеременную %LOGIN_NAME%.

Windows [ править ]

Динамические переменные среды (также называемые внутренними переменными или переменными системной информации в DOS) являются переменными псевдо-среды, которые поддерживаются, CMDкогда включены расширения командной строки, и они расширяются до различных дискретных значений при каждом запросе, то есть их значения могут изменяться при запросе нескольких раз даже в рамках одной команды. Хотя их можно использовать в пакетных заданиях и по запросу, они не хранятся в среде. Следовательно, они не перечислены SETи не существуют для чтения внешними программами. Они не чувствительны к регистру.

Косвенно они также поддерживаются в Windows COMMAND.COM, которая была изменена для внутреннего вызова CMD.EXEдля выполнения команд.

%CD%
Эта псевдопеременная расширяется до текущего каталога, эквивалентного выходным данным команды CDпри вызове без аргументов. В то время как длинное имя файла может быть возвращено в CMD.EXEзависимости от текущего каталога, тот факт, что текущий каталог всегда будет в формате 8.3 , COMMAND.COMприведет к тому, что он будет возвращать короткое имя файла COMMAND.COM, даже при COMMANDвнутреннем вызове CMD.
%CMDCMDLINE%
Эта псевдопеременная расширяется до исходных параметров запуска CMD.EXE, например, " 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" (без начальных нулей). [28] [32] [29] Внешние команды и некоторые внутренние команды устанавливают уровни ошибок при выполнении. См. Также псевдопеременную с таким же именем %ERRORLEVEL%в DR-DOS и IF ERRORLEVELкоманду.
%RANDOM%
Эта псевдо-переменная возвращает случайное число от " 0" до " 32767".
%TIME%
Эта псевдопеременная возвращает текущее время. Время отображается в соответствии с предпочтениями формата времени текущего пользователя. Если %TIME%и %DATE%переменные оба используются, важно , чтобы прочитать их обоих в таком порядке в быстрой последовательности, чтобы избежать проблем с полуночи опрокидыванием.

См. Также [ править ]

  • Переменная (информатика)
  • Список команд Unix
  • Список команд DOS
  • Специальная папка
  • Модули Среда
  • PWB оболочка

Заметки [ править ]

  1. ^ a b К приложениям, которые неправильно обрабатывают переменные среды , длина которых превышает 128 символов, относятся CadStar PCB , Checkit, Computer Select CD-ROM, RenderMan, VINES Network , Windows 3.0 и Word для Windows 6.0 .
  2. ^ 4DOS и MS-DOS 7.0 устанавливают длину 127 и вставляют ASCII-13 в эту позицию, нобиблиотеки Borland устанавливают для длины недопустимое значение 128 и не вставляют ASCII-13. Для более коротких командных строк 4DOS / NDOS и DR-DOS также вставляют ASCII-0 после ASCII-13, но не при вызоведирективыvis INSTALL ; MS-DOS - нет.

Ссылки [ править ]

  1. ^ Роббинс, Арнольд; Биби, Нельсон Х.Ф. (май 2005 г.). Апанди, Татьяна; Рэндал, Эллисон; Витвер, Адам (ред.). Классический сценарий оболочки (1-е изд.). О'Рейли . ISBN 978-0-596-00595-5.
  2. ^ "unset - неустановленные значения и атрибуты переменных и функций -" . Справочник по командам и утилитам, Единая спецификация UNIX - Базовые спецификации открытой группы, IEEE Std 1003.1-2008 (издание 7-е изд.). IEEE и Open Группа . 2016 [2001]. Архивировано 18 декабря 2017 года . Проверено 18 декабря 2017 .
  3. ^ fgrose (2015-07-31) [2011]. "Неустановленная встроенная команда" . Bash Hackers Wiki . Архивировано 18 декабря 2017 года . Проверено 18 декабря 2017 .
  4. ^ Джейкобс, Майк; Корен, Александр; Сатран, Михаил (14 ноября 2017 г.). «Сохранение и получение настроек и других данных приложения» . Microsoft . Архивировано 18 декабря 2017 года . Проверено 18 декабря 2017 .
  5. ^ Рэймонд, Эрик (2002-08-02) [Первоначально опубликовано в 2001 году]. «Проект БРАУЗЕР» . Архивировано 21 сентября 2019 года . Проверено 21 октября 2020 .
  6. ^ «LWN - Развитие» . LWN.net . 2001-02-01. Архивировано 8 февраля 2019 года . Проверено 21 октября 2020 . Стандартизация переменной среды BROWSER. Эрик Раймонд продвигает использование новой переменной среды BROWSER в дополнение к существующим переменным PAGER, MAILER и EDITOR. Это усилие проверяется как эксперимент по взлому социальных систем.
  7. ^ Špaček, Михал (2020-01-19) [первая версия опубликована 2013]. «Env :: Browser-0.06» . metacpan.org . Архивировано 21 октября 2020 года . Проверено 21 октября 2020 . Env :: Browser - обработать переменную среды $ BROWSER и запустить веб-браузер.
  8. ^ "webbrowser - Удобный контроллер веб-браузера" . docs.python.org . Архивировано 13 октября 2020 года . Проверено 21 октября 2020 .
  9. ^ "DefaultWebBrowser - Debian Wiki" . wiki.debian.org . 2020-06-10. Архивировано 21 октября 2020 года . Проверено 21 октября 2020 . Переменная среды BROWSER может быть установлена ​​на […] всегда выбирайте желаемый браузер.
  10. ^ Б с д е е г ч я J к л м п о р а Q R сек т у V ш х у г аа аб Brothers, Hardin; Роусон, Том ; Конн, Рекс К .; Пол, Маттиас Р .; Краситель, Чарльз Э .; Георгиев, Лучезар И. (27.02.2002). Онлайн-справка по 4DOS 8.00 .
  11. ^ a b c d e f g h i j k l m n o p q r Пол, Матиас Р. (1997-07-30) [1994-05-01]. NWDOS-TIPs - Советы и приемы для Novell DOS 7, с подробным описанием, ошибками и обходными путями . MPDOSTIP . Выпуск 157 (на немецком языке) (3-е изд.). Архивировано 4 ноября 2016 года . Проверено 6 августа 2014 .(NB. NWDOSTIP.TXT - это комплексная работа по Novell DOS 7 и OpenDOS 7.01 , включая описание многих недокументированных функций и внутренних компонентов. Приведенная ссылка указывает на преобразованную в HTML версию файла, которая является частью MPDOSTIP.ZIPколлекции.) [1]
  12. ^ a b c d e Пол, Маттиас Р. (01.05.1997) [01.03.1995]. «Рекомендации по JPSofts 4DOS 5.5b / c, 5.51, 5.52a и NDOS» . MPDOSTIP (на немецком языке). Архивировано 4 ноября 2016 года . Проверено 8 мая 2015 .(NB. Приведенная ссылка указывает на HTML-конвертированную версию 4DOS5TIP.TXTфайла, которая является частью MPDOSTIP.ZIPколлекции.) [2]
  13. ^ a b Пол, Маттиас Р. (1997-10-02). "Caldera OpenDOS 7.01 / 7.02 Обновление Alpha 3 IBMBIO.COM README.TXT" . Архивировано из оригинала на 2003-10-04 . Проверено 29 марта 2009 . [3]
  14. ^ Пол, Маттиас Р. (1997-05-27) [1996]. «СЕТЕНВ v1.11» . Архивировано из оригинала на 2009-02-15 . Проверено 9 августа 2019 . […] SETENV […], чтобы скрыть и позже восстановить […] предварительную среду […] Используя SETENV.COM, вы можете сэкономить несколько килобайт редкой памяти DOS […] в зависимости от количества драйверов, загруженных с помощью INSTALL = / INSTALLHIGH = / HIINSTALL = и текущий размер предварительной среды. […] Эту оригинальную […] функцию нельзя найти ни в одном известном менеджере / оптимизаторе памяти. […]
  15. ^ Пол, Матиас Р. (2002-04-06). «Re: [fd-dev] ОБЪЯВЛЕНИЕ: CuteMouse 2.0 alpha 1» . freedos-dev . Архивировано 07 февраля 2020 года . Проверено 7 февраля 2020 . […] В подпрограмме CTMOUSE.ASM prepareTSR я нашел комментарий относительно нулевого окружения. […] DESQview или DRDOS zero-env? […] Освободить блок среды […] пропустить, если возникнут проблемы […] нулевая клавиатура для утилит стиля MEM […]
  16. ^ "Руководство пользователя PTS-DOS 2000 Pro" (PDF) . Архивировано (PDF) из оригинала на 2018-05-12 . Проверено 12 мая 2018 .
  17. ^ Пол, Маттиас Р. (2002-10-07). «Re: запустить COM-файл» . Группа новостейalt.msdos.programmer . Архивировано 3 сентября 2017 года . Проверено 3 сентября 2017 . [4]
  18. ^ a b c d e f Datalight, Inc .; ГПвНО (апрель 2005 г.) [1999]. «Руководство пользователя Datalight ROM-DOS» (PDF) . Datalight, Inc. 3010-0200-0716. Архивировано (PDF) из оригинала 20.03.2019 . Проверено 16 сентября 2018 .
  19. ^ a b c d e f g h i Котулла, Мартин (ноябрь 1987 г.). "Фон CP / M zu MS-DOS, Teil 11" (PDF) . Профессиональные вычисления (ПК) - Schneider International (на немецком языке). 3 (11): 100–103. Архивировано (PDF) из оригинала 24.04.2019 . Проверено 20 мая 2018 .
  20. ^ a b c d e f g h i j k l m n Пол, Матиас Р. (26 марта 2002 г.). "Обновленный CLS размещен" . Список рассылки freedos-dev. Архивировано 4 октября 2018 года . Проверено 6 августа 2014 .
  21. ^ a b c d e f g h Руководство пользователя Caldera DR-DOS 7.02 . Caldera, Inc. 1998 [1993, 1997]. Архивировано из оригинала на 2016-11-04 . Проверено 10 августа 2013 .
  22. ^ a b c d Пол, Маттиас Р. (14 августа 2017 г.) [7 августа 2017 г.]. «Продолжение саги о Windows 3.1 в расширенном режиме на OmniBook 300» . MoHPC - Музей калькуляторов HP . Архивировано 01 мая 2018 года . Проверено 1 мая 2018 . […] Установите DRSYS = ON (необязательно, чтобы сообщить SYS, что вы знаете о том, что вы запускаете его в чужой среде и хотите продолжить работу в любом случае без необходимости индивидуально подтверждать некоторые предупреждения и дополнительные информационные экраны, отображаемые в этом сценарии в противном случае) […]
  23. ^ a b c d e f g h i CCI Multiuser DOS 7.22 GOLD Онлайн-документация . Concurrent Controls, Inc. (CCI). 1997-02-10. HELP.HLP.
  24. ^ Руководство по установке CCI Multiuser DOS 7.22 GOLD . Concurrent Controls, Inc. (CCI). 1997-02-10. PRINTDOC.HLP.
  25. ^ a b c Пол, Матиас Р. (20 февраля 2002 г.). "Как обнаружить FreeCOM / FreeDOS в пакетном режиме?" . Список рассылки freedos-dev. Архивировано 6 ноября 2018 года . Проверено 6 августа 2014 .
  26. ^ Бринк, Шон (2018-11-17). «Переменные среды в Windows 10 - Полный список переменных среды в Windows 10» . Форумы Windows Ten . Архивировано 27 марта 2019 года . Проверено 24 апреля 2019 .
  27. ^ Б с д е е г ч я J к л м п о р а Q R сек т у V ш х у г аа аЬ ас объявления аи аф ага ах аю а ^ ак Шульца, Хайо (2014-10-02). «Ordner für spezielle Fälle - Die« benannten Ordner »в Windows aus User- und Entwicklersicht» [Папки специального назначения - «именованные папки» Windows с точки зрения пользователя и разработчика]. c't - магазин компьютерной техники(на немецком). Heise Verlag . 2014 (22): 180–184. Архивировано 9 июля 2016 года . Проверено 8 апреля 2019 .
  28. ^ a b c Пол, Маттиас Р. (01.05.1997) [01.10.1993]. BATTIPs - Советы и хитрости по программированию пакетных заданий . MPDOSTIP (на немецком языке). 7: УРОВЕНЬ ОШИБКИ abfragen. Архивировано 23 августа 2017 года . Проверено 23 августа 2017 . [5] [6] (NB. BATTIPS.TXT является частью MPDOSTIP.ZIP. Предоставленная ссылка указывает на более старую версию файла BATTIPS.TXT, преобразованную в HTML.) [7]
  29. ^ a b c Ауэр, Эрик; Пол, Маттиас Р .; Холл, Джим (2015-12-24) [2003-12-31]. «Уровни ошибок MS-DOS» . Архивировано из оригинала на 2015-12-24.
  30. ^ Пол, Матиас Р. (1998-01-09). DELTREE.BAT R1.01 Расширенное удаление файлов и каталогов . Кальдера, Inc. Архивировано из оригинала на 2019-04-08 . Проверено 8 апреля 2019 .
  31. ^ DR-DOS 7.03 WHATSNEW.TXT - Изменения с DR-DOS 7.02 на DR-DOS 7.03 . Caldera, Inc. 24 декабря 1998 г. Архивировано из оригинала на 2019-04-08 . Проверено 8 апреля 2019 .
  32. ^ Аллен, Уильям; Аллен, Линда. "УРОВНИ ОШИБОК Windows 95/98 / ME" . Архивировано из оригинала на 2011-07-07.

Дальнейшее чтение [ править ]

  • Чен, Раймонд (2010-05-06). "Что это за странные = C: переменные среды?" . Новая старая вещь . Microsoft . Архивировано 27 мая 2018 года . Проверено 27 мая 2017 .

Внешние ссылки [ править ]

  • environ(7): пользовательская среда -  Руководство программиста Linux - Обзор, условные обозначения и разное
  • environ(7) -  Руководство по разной информации FreeBSD
  • environ(7) -  Руководство по разной информации Darwin и macOS
  • environ(5) -  Справочное руководство по стандартам, средам и макросам Solaris 10
  • Вики по переменным окружения
  • Переменные пользовательской среды
  • исправить ошибку setx.exe не найден