stringtranslate.com

Переменная окружения

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

Они были введены в их современной форме в 1979 году с версией 7 Unix , поэтому включены во все разновидности и варианты операционной системы Unix с того момента, включая Linux и macOS . Начиная с PC DOS 2.0 в 1982 году, все последующие операционные системы Microsoft , включая Microsoft Windows и OS/2, также включали их в качестве функции, хотя с несколько иным синтаксисом, использованием и стандартными именами переменных.

Дизайн

Во всех Unix и Unix-подобных системах, а также в Windows, каждый процесс имеет свой собственный отдельный набор переменных среды . По умолчанию, когда создается процесс, он наследует дубликат среды выполнения своего родительского процесса, за исключением явных изменений, внесенных родителем при создании дочернего процесса. На уровне API эти изменения должны быть выполнены между запущенными forkи exec. В качестве альтернативы, из командных оболочек, таких как bash , пользователь может изменять переменные среды для вызова определенной команды, косвенно вызывая ее через envили используя ENVIRONMENT_VARIABLE=VALUE <command>нотацию. Работающая программа может получать доступ к значениям переменных среды для целей конфигурации.

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

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

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

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

В общем случае набор переменных окружения функционирует как ассоциативный массив , где и ключи, и значения являются строками. Интерпретация символов в каждой строке различается в разных системах. Когда необходимо представить такие структуры данных, как списки, обычно используют список, разделенный двоеточием (обычно в Unix и Unix-подобных системах) или точкой с запятой (обычно в Windows и DOS).

Синтаксис

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

Обычно имена переменных окружения выбираются в верхнем регистре. В программном коде это помогает отличать переменные окружения от других видов имен в коде. Имена переменных окружения чувствительны к регистру в операционных системах типа Unix, но не в DOS, OS/2 и Windows.

Unix

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

Чтобы отобразить домашний каталог пользователя, пользователь может ввести:

эхо $HOME 

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

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

DOS, OS/2 и Windows

В интерпретаторах командной строки DOS, OS/2 и Windows, таких как COMMAND.COMи CMD.EXE, переменная среды извлекается путем помещения %знака до и после нее.

В интерпретаторах командной строки DOS, OS/2 и Windows, а также в их API , верхний и нижний регистр в именах переменных среды не различаются.

Переменная среды named HOMEDRIVEсодержит букву диска (плюс двоеточие в конце :) домашнего каталога пользователя, а также HOMEPATHполный путь к домашнему каталогу пользователя на этом диске.

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

ЭХО  %HOMEDRIVE%%HOMEPATH%

Команда SET(без аргументов) отображает все переменные среды и их значения. В Windows NT и более поздних версиях setтакже может использоваться для печати всех переменных, имя которых начинается с заданного префикса, указав префикс в качестве единственного аргумента команды.

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

echo $env:homedrive$env:homepath Запись-вывод  $env:homedrive$env:homepath "$env:homedrive$env:homepath "

В PowerShell не различаются заглавные и строчные буквы в именах переменных среды.

Следующая команда отображает все переменные среды и их значения:

получить-childitem  env :

Задание: Unix

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

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

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

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

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

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

В оболочках 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без аргументов отображает все переменные окружения вместе с их значениями; SET " ", ноль или более пробелов, также будут включать внутренние переменные. В CMD.EXE, можно назначать локальные переменные, которые не будут глобальными, используя SETLOCALкоманду, и ENDLOCALвосстанавливать окружение.

Используйте переключатель /? для отображения внутренней документации или используйте средство просмотра help :

 НАБОР  /? НАБОР ПОМОЩИ SETLOCAL /? ПОМОГИТЕ SETLOCAL


В PowerShell назначение выполняется по синтаксису, похожему на Unix:

 $env:ПЕРЕМЕННАЯ  =  "ЗНАЧЕНИЕ"

Примеры

Примеры переменных среды включают в себя:

Истинные переменные среды

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 главная среда предоставляется первичным командным процессором, который наследует предварительную среду, определенную в 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] [примечание 1] не ожидают, что содержимое переменных окружения превысит 128 символов. DR-DOS COMMAND.COMподдерживает переменные окружения длиной до 255, 4DOS даже до 512 символов. [10] Поскольку COMMAND.COMможет быть настроен (через /L:128..1024) для поддержки командных строк длиной до 1024 символов внутри MS-DOS 7.0 и выше, переменные среды должны также содержать не менее 1024 символов. В некоторых версиях DR-DOS среда, передаваемая драйверам, которым часто не нужна их среда после установки, может быть сжата или перемещена через параметры SETENVили INSTALL[HIGH]/ (нулевая среда), (заменить диск, например ) и (переместить среду выше программы), чтобы минимизировать эффективно получаемый драйвером резидентный след памяти .LOADHIGH/Z/D[:loaddrive]B:TSR.COM/E[14] [13] [11] [15] [16] [17]

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

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

%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 расширяются или используется DTACOMMAND.COM по умолчанию. Хотя 4DOS поддерживает более длинные командные строки, по-прежнему поддерживает только максимум 126 символов в приглашении по умолчанию (если не переопределено с помощью /U:128..255для указания размера буфера командной строки), но тем не менее внутренние командные строки могут стать длиннее с помощью расширения переменной fe (в зависимости от того, /L:128..1024чтобы указать размер внутреннего буфера). В дополнение к байту длины командной строки в PSP командная строка PSP обычно ограничена ASCII-13 , и командные строки длиннее 126 символов обычно будут обрезаны путем вставки ASCII-13 в позицию 127, [12] но на это нельзя полагаться во всех сценариях. [12] [nb 2] Переменная будет подавлена ​​для внешних команд, вызываемых с предшествующим @символом -, например, @XCOPY ...для обратной совместимости и для минимизации размера среды при загрузке неперемещаемых программ terminate-and-stay-resident . Некоторые бета-версии Windows 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% также поддерживается внешними командами 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_PATHв Unix-подобных системах). Обычно он изменяется с помощью команды 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%переменной, опционально включая пароли файлов и каталогов . В качестве альтернативы она может содержать специальное значение " " или " " для обеспечения использования переменной даже в сценариях, где переменная может указывать на неправильный процессор командной строки, например, при запуске некоторых версий команды DR-DOS под чужой операционной системой. [22]ON1%COMSPEC%%COMSPEC%SYS
%DRSYS%
Установка этой переменной в значение « ON» или « 1» заставит некоторые версии команды DR-DOS SYSработать под управлением сторонних операционных систем вместо отображения предупреждения. [22]
%FBP_USER%
Указывает имя пользователя, используемое командой FastBack и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, в пакетных заданиях и приложениях. [21] Известные значения включают " DOSPLUS" ( DOS Plus 1.2 в эмуляции DOS), " CPCDOS 4.1" (DOS Plus 1.2 в эмуляции CP/MDRDOS ), " " ( 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" ( DR Multiuser DOS ), " MDOS" ( CCI Многопользовательский DOS ), [23] " IMSMDOS" ( IMS Многопользовательский DOS ), " REAL32" ( REAL/32 ). [11] [25] MS-DOS также INTERSVRищет значение " ". [25] См. также одноименную переменную окружения, представленную позднее в семействе Windows NT .DRDOS%OS%
%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" ( 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 ), [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и /RDR-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, значение по умолчанию Multiuser 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, значение по умолчанию Multiuser 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%
Эта переменная используется для определения нестандартных размеров экрана rows[,cols]для DIRопций /Pи /W(аналогично DOS Plus %$LENGTH%и %$WIDTH%в DOS Plus). [18]
%NEWFILE%
Эта переменная автоматически устанавливается в первый параметр, заданный директиве CONFIG.SYS NEWFILE . [18]

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

ОС/2

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

Окна

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

%APPDATA%
Содержит полный путь к каталогу Application Data вошедшего в систему пользователя. Не работает в Windows NT 4.0 SP6 UK.
%LOCALAPPDATA%
Эта переменная является временными файлами приложений . Она используется для хранения тем рабочего стола , отчетов об ошибках Windows , кэширования и профилей веб-браузеров.
%ComSpec%/%COMSPEC%
Переменная %ComSpec%содержит полный путь к командному процессору; в операционных системах семейства Windows NT это cmd.exe , а в Windows 9x%COMSPEC%COMMAND.COM .
%OS%
Переменная %OS%содержит символическое имя семейства операционных систем для различения различных наборов функций в пакетных заданиях . Она напоминает идентично названную переменную окружения, %OS%встречающуюся во всех операционных системах DOS, связанных с Digital Research , таких как Concurrent DOS, Multiuser DOS , REAL/32, DOS Plus , DR DOS , Novell DOS и OpenDOS. %OS%всегда содержит строку " Windows_NT" в семействе Windows NT . [27]
%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-bit ).
%CommonProgramFiles%
Эта переменная указывает на каталог Common Files . Значение по умолчанию — " C:\Program Files\Common Files" в английской версии Windows.
%OneDrive%
Переменная %OneDrive%— это специальная системная переменная среды, которая есть в Windows NT и ее производных. Ее значение — это путь, по которому (если установлен и настроен) находится каталог Onedrive. Значение %OneDrive%в большинстве случаев — « C:\Users\{Username}\OneDrive\».
%SystemDrive%
Переменная %SystemDrive%— это специальная системная переменная окружения, которая есть в Windows NT и ее производных. Ее значение — диск, на котором был размещен системный каталог. Значение %SystemDrive%в большинстве случаев — « C:».
%SystemRoot%
Переменная %SystemRoot%— это специальная системная переменная окружения, которая есть в семействе операционных систем Windows NT. Ее значение — это расположение системного каталога, включая диск и путь. Диск тот же, что %SystemDrive%и путь по умолчанию при чистой установке, который зависит от версии операционной системы. По умолчанию:
%windir%
Эта переменная указывает на каталог Windows . (В семействе операционных систем Windows NT она идентична переменной %SystemRoot%). Windows 95 – 98 и Windows ME по умолчанию устанавливаются в " C:\Windows". Для других версий Windows см. %SystemRoot%запись выше.

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

%ALLUSERSPROFILE%( %PROGRAMDATA%начиная с Windows Vista)
Эта переменная расширяется до полного пути к каталогу профиля All Users . Этот профиль содержит ресурсы и настройки, которые используются всеми системными учетными записями. Ссылки на ярлыки , скопированные в меню «Пуск » или каталоги «Рабочий стол» 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 и Windows также поддерживают псевдопеременные среды. Это значения, которые извлекаются как переменные среды, но на самом деле не хранятся в среде, а вычисляются по запросу.

ДОС

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

Так называемые параметры замены или заменяемые параметры (терминология Microsoft/IBM), также известные как переменные замены (терминология Digital Research/Novel/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 и т. д. имеют префикс в виде подчеркивания (" ") (например ), [10] они не попадают под действие DR-DOS (например )._%_SECOND%COMMAND.COM%OS_VERSION%

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

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

%AM_PM%
Эта псевдопеременная возвращает статус текущего времени до или после полудня. Возвращаемая строка зависит от версии DR-DOS, зависящей от локали, например " am" или " pm" в английской версии. Она напоминает переменную идентификатора с идентичным именем в сценариях входа Novell NetWare .
%DAY%
Эта псевдопеременная возвращает дни текущей даты в двузначном формате с ведущими нулями, например " " 01.." 31". См. также похожую псевдопеременную %_DAY%. Она напоминает переменную идентификатора с идентичным именем в сценариях входа в систему Novell NetWare .
%DAY_OF_WEEK%
Эта псевдопеременная возвращает название дня недели в формате из 3 символов. Возвращаемая строка зависит от версии DR-DOS, зависящей от локали, например " Sun", " Mon", " Tue", " Wed", " ", " Thu" Fri, или " Sat" в английской версии. Она напоминает переменную идентификатора с идентичным именем в сценариях входа Novell NetWare .
%ERRORLEVEL%
В COMMAND.COMDR-DOS 7.02 и выше эта псевдопеременная возвращает последний уровень ошибки, возвращенный внешней программой или RETURNкомандой, например " 0".." 255". [29] [30] См. также одноименную псевдопеременную %ERRORLEVEL%в Windows и IF ERRORLEVELусловную команду.
%ERRORLVL%
В DR-DOS 7.02 и выше эта псевдопеременная возвращает последний уровень ошибки в 3-значном формате с ведущими нулями, например " 000".." 255". [29] [30] В многопользовательском DOS это настоящая переменная окружения, автоматически обновляемая оболочкой в ​​соответствии с кодом возврата завершающихся программ. [23] См. также связанную псевдопеременную %ERRORLEVEL%в DR-DOS и IF ERRORLEVELкоманду.
%GREETING_TIME%
Эта псевдопеременная возвращает время 3-уровневого дневного приветствия. Возвращаемая строка зависит от версии 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 , которая может возвращать версии также для не-DR-DOS версий DOS.
%SECOND%
Эта псевдопеременная возвращает секунды текущего времени в формате из 2 цифр с ведущими нулями, например " " 00.." 59". Она напоминает переменную идентификатора с идентичным именем в сценариях входа Novell NetWare . См. также похожую псевдопеременную %_SECOND%.
%SHORT_YEAR%
Эта псевдопеременная возвращает год текущей даты в двузначном формате с ведущими нулями, например " 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). [31] [32] См. также связанную CONFIG.SYSдирективу SWITCHAR и переменную окружения %SWITCHAR%.
%_CODEPAGE%
Эта псевдопеременная возвращает текущую кодовую страницу системы (" 1".." 65533"), например " 437", " 850", " 858". Эта переменная была первоначально введена 4DOS [10] , но также стала доступна COMMAND.COMс DR-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 и евро . [32] [33] Эта переменная была первоначально введена в 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, но также будет работать с ODI / VLM Personal NetWare , если текущий диск является PNW-отображенным диском (в противном случае возвращается пустая строка). См. также переменную окружения с похожим названием .%LOGINNAME%
%P_STATION%
Эта псевдопеременная возвращает номер физической станции в формате " ????????????". Значение зависит от MAC-адреса сетевого адаптера, но может быть переопределено. Оно напоминает переменную идентификатора с идентичным именем в сценариях входа Novell NetWare .
%STATION%
Эта псевдопеременная возвращает логический номер станции, начинающийся с " 1" для первого клиента. Номера назначаются файловым сервером и остаются неизменными до тех пор, пока соединение IPX остается установленным. Она напоминает переменную идентификатора с идентичным именем в сценариях входа Novell NetWare .
%FULL_NAME%
Эта псевдопеременная возвращает полное имя вошедшего в систему пользователя, если оно доступно. Она напоминает переменную идентификатора с идентичным именем в сценариях входа Novell NetWare . См. также связанную псевдопеременную %LOGIN_NAME%.

Окна

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

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

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

Другие оболочки

Unix-подобные оболочки имеют похожие динамически генерируемые переменные, bash $RANDOMявляется хорошо известным примером. Однако, поскольку эти оболочки имеют концепцию локальных переменных, они описываются как специальные локальные переменные. [35]

Смотрите также

Примечания

  1. ^ ab К приложениям, которые не справляются должным образом с переменными среды длиной более 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, но не при вызове через директиву INSTALL ; MS-DOS этого не делает.

Ссылки

  1. ^ Роббинс, Арнольд; Биб, Нельсон HF (май 2005 г.). Апанди, Татьяна; Рэндал, Эллисон; Витвер, Адам (ред.). Classic Shell Scripting (1-е изд.). O'Reilly . ISBN 978-0-596-00595-5.
  2. ^ "unset - сбросить значения и атрибуты переменных и функций – ". Справочник по командам и утилитам, Единая спецификация UNIX - Базовые спецификации Open Group, IEEE Std 1003.1-2008 (Выпуск 7-е изд.). IEEE и The Open Group . 2016 [2001]. Архивировано из оригинала 2017-12-18 . Получено 2017-12-18 .
  3. ^ fgrose (2015-07-31) [2011]. "The unset builtin command". Bash Hackers Wiki . Архивировано из оригинала 2017-12-18 . Получено 2017-12-18 .
  4. ^ Якобс, Майк; Корен, Александр; Сатран, Майкл (2017-11-14). "Хранение и извлечение настроек и других данных приложений". Microsoft . Архивировано из оригинала 2017-12-18 . Получено 2017-12-18 .
  5. ^ Рэймонд, Эрик (2002-08-02) [Первоначально опубликовано в 2001]. "Проект БРАУЗЕР". Архивировано из оригинала 2019-09-21 . Получено 2020-10-21 .
  6. ^ "LWN - Development". LWN.net . 2001-02-01. Архивировано из оригинала 2019-02-08 . Получено 2020-10-21 . Стандартизация переменной среды BROWSER. Эрик Рэймонд продвигает использование новой переменной среды BROWSER в дополнение к существующим переменным PAGER, MAILER и EDITOR. Эта работа тестируется как эксперимент по взлому социальных систем.
  7. ^ Špaček, Michal (2020-01-19) [Первая версия опубликована в 2013]. "Env::Browser-0.06". metacpan.org . Архивировано из оригинала 2020-10-21 . Получено 2020-10-21 . Env::Browser - Обработка переменной среды $BROWSER и запуск веб-браузера
  8. ^ "webbrowser — Удобный контроллер веб-браузера". docs.python.org . Архивировано из оригинала 2020-10-13 . Получено 2020-10-21 .
  9. ^ "DefaultWebBrowser - Debian Wiki". wiki.debian.org . 2020-06-10. Архивировано из оригинала 2020-10-21 . Получено 2020-10-21 . Переменная окружения BROWSER может быть установлена ​​так, чтобы[…] всегда выбирать нужный вам браузер.
  10. ^ abcdefghijklmnopqrstu vwxyz aa ab Братья, Хардин; Роусон, Том ; Конн, Рекс К .; Пол, Маттиас Р.; Дай, Чарльз Э.; Георгиев, Лучезар И. (27.02.2002). Онлайн-справка по 4DOS 8.00 .
  11. ^ abcdefghijklmnopqr Пол, Матиас Р. (30 июля 1997 г.) [1 мая 1994 г.]. NWDOS-TIPs — советы и подсказки для Novell DOS 7, с просмотром недокументированных подробностей, ошибок и обходных путей. Выпуск 157 (на немецком языке) (3-е изд.). Архивировано из оригинала 4 ноября 2016 г. Проверено 6 августа 2014 г. {{cite book}}: |work=игнорируется ( помощь ) (Примечание. NWDOSTIP.TXT — это всеобъемлющая работа по Novell DOS 7 и OpenDOS 7.01 , включающая описание многих недокументированных функций и внутренних компонентов. Приведенная ссылка указывает на преобразованную в HTML версию файла, которая является частью коллекции MPDOSTIP.ZIP.) [1]
  12. ^ abcde Пол, Матиас Р. (1 мая 1997 г.) [01 марта 1995 г.]. «Подсказки по JPSofts 4DOS 5.5b/c, 5.51, 5.52a и NDOS». МПДОСТИП (на немецком языке). Архивировано из оригинала 4 ноября 2016 г. Проверено 8 мая 2015 г.(Примечание. Приведенная ссылка указывает на преобразованную в HTML версию файла 4DOS5TIP.TXT, которая является частью коллекции MPDOSTIP.ZIP.) [2]
  13. ^ ab Paul, Matthias R. (1997-10-02). "Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM README.TXT". Архивировано из оригинала 2003-10-04 . Получено 2009-03-29 .[3]
  14. ^ Пол, Маттиас Р. (1997-05-27) [1996]. "SETENV v1.11". Архивировано из оригинала 2009-02-15 . Получено 2019-08-09 . […] SETENV […] для скрытия и последующего восстановления […] предварительной среды […] Используя SETENV.COM, вы можете сэкономить несколько килобайт редкой памяти DOS […] в зависимости от количества драйверов, загруженных INSTALL= / INSTALLHIGH= / HIINSTALL=, и текущего размера предварительной среды. […] эта оригинальная […] функция не встречается ни в одном известном менеджере памяти/оптимизаторе. […]
  15. ^ Пол, Маттиас Р. (2002-04-06). "Re: [fd-dev] ОБЪЯВЛЕНИЕ: CuteMouse 2.0 alpha 1". freedos-dev . Архивировано из оригинала 2020-02-07 . Получено 2020-02-07 . […] В процедуре prepareTSR CTMOUSE.ASM я нашел комментарий относительно нулевой среды. […] DESQview или нулевая среда DRDOS ? […] блок освобождения среды […] пропустить, если возникнут проблемы […] нулевая панель для утилит в стиле MEM […]
  16. ^ "PTS-DOS 2000 Pro User Manual" (PDF) . Архивировано (PDF) из оригинала 2018-05-12 . Получено 2018-05-12 .
  17. ^ Пол, Маттиас Р. (2002-10-07). "Re: Запуск COM-файла". Группа новостей : alt.msdos.programmer. Архивировано из оригинала 2017-09-03 . Получено 2017-09-03 .[4]
  18. ^ abcdef Datalight, Inc. ; GPvNO (апрель 2005 г.) [1999]. "Datalight ROM-DOS User's Guide" (PDF) . Datalight, Inc. 3010-0200-0716. Архивировано (PDF) из оригинала 2019-03-20 . Получено 16-09-2018 .
  19. ^ abcdefghi Котулла, Мартин (ноябрь 1987 г.). «Фон CP/M для MS-DOS, часть 11» (PDF) . Профессиональные вычисления (ПК) - Schneider International (на немецком языке). 3 (11): 100–103. Архивировано (PDF) из оригинала 24 апреля 2019 г. Проверено 20 мая 2018 г.
  20. ^ abcdefghijklmn Пол, Маттиас Р. (2002-03-26). "Обновленный CLS опубликован". Список рассылки freedos-dev. Архивировано из оригинала 2018-10-04 . Получено 2014-08-06 .
  21. ^ abcdefgh Руководство пользователя Caldera DR-DOS 7.02. Caldera, Inc. 1998 [1993, 1997]. Архивировано из оригинала 2016-11-04 . Получено 2013-08-10 .
  22. ^ abcd Пол, Маттиас Р. (2017-08-14) [2017-08-07]. "Продолжающаяся сага Windows 3.1 в расширенном режиме на OmniBook 300". MoHPC - Музей калькуляторов HP . Архивировано из оригинала 2018-05-01 . Получено 2018-05-01 . […] установите DRSYS=ON (необязательно, чтобы сообщить SYS, что вы знаете о том, что вы запускаете его в чужой среде, и хотите продолжить в любом случае, не требуя индивидуального подтверждения некоторых предупреждений и дополнительных информационных экранов, отображаемых в этом сценарии, в противном случае) […]
  23. ^ abcdefghi 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). 10.02.1997. PRINTDOC.HLP.
  25. ^ abc Пол, Маттиас Р. (2002-02-20). "Как обнаружить FreeCOM/FreeDOS в пакетном режиме?". Список рассылки freedos-dev. Архивировано из оригинала 2018-11-06 . Получено 2014-08-06 .
  26. ^ «Распознанные переменные среды — развертывание Windows». 2024-01-09.
  27. ^ Бринк, Шон (2018-11-17). "Переменные среды в Windows 10 - Полный список переменных среды в Windows 10". Форумы Windows Ten . Архивировано из оригинала 2019-03-27 . Получено 2019-04-24 .
  28. ^ abcdefghijklmnopqrstu vwxyz aa ab ac ad ae af ag ah ai aj ak Schulz, Hajo (02 октября 2014 г.). «Ordner für spezielle Fälle — Die «benannten Ordner» in Windows aus User- und Entwicklersicht» [Папки специального назначения — «именованные папки» Windows с точки зрения пользователя и разработчика]. c't - магазин компьютерной техники (на немецком языке). 2014 (22). Хейзе Верлаг : 180–184. Архивировано из оригинала 9 июля 2016 г. Проверено 08 апреля 2019 г.
  29. ^ abc Пол, Матиас Р. (1 мая 1997 г.) [01 октября 1993 г.]. BATTIPs — Советы и рекомендации по программированию пакетных заданий (на немецком языке). 7: УРОВЕНЬ ОШИБКИ. Архивировано из оригинала 23 августа 2017 г. Проверено 23 августа 2017 г. {{cite book}}: |work=игнорируется ( помощь ) [5] [6] Архивировано 11.09.2017 в archive.today (Примечание. BATTIPS.TXT является частью MPDOSTIP.ZIP. Предоставленная ссылка указывает на более старую версию файла BATTIPS.TXT, преобразованную в HTML.) [7]
  30. ^ abc Auer, Eric; Paul, Matthias R.; Hall, Jim (2015-12-24) [2003-12-31]. "MS-DOS errorlevels". Архивировано из оригинала 2015-12-24.
  31. ^ Пол, Маттиас Р. (1998-01-09). DELTREE.BAT R1.01 Расширенное удаление файлов и каталогов. Caldera, Inc. Архивировано из оригинала 2019-04-08 . Получено 2019-04-08 .
  32. ^ ab DR-DOS 7.03 WHATSNEW.TXT — Изменения с DR-DOS 7.02 на DR-DOS 7.03. Caldera, Inc. 1998-12-24. Архивировано из оригинала 2019-04-08 . Получено 2019-04-08 .
  33. ^ Пол, Маттиас Р. (2001-06-10) [1995]. "Формат файла DOS COUNTRY.SYS" (файл COUNTRY.LST) (ред. 1.44). Архивировано из оригинала 2016-04-20 . Получено 2016-08-20 .
  34. ^ Аллен, Уильям; Аллен, Линда. "Windows 95/98/ME ERRORLEVELs". Архивировано из оригинала 2011-07-07.
  35. ^ "Переменные оболочки". Справочное руководство Bash .

Дальнейшее чтение

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