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

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

эхо $HOME 

Если xyzнеобходимо добавить к значению переменной HOME, можно ввести:

эхо ${ HOME } xyz 

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

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

DOS, OS/2 и Windows

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

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

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

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

ЭХО  %HOMEDRIVE%%HOMEPATH%

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

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

echo $env:homedrive$env:homepath Вывод записи  $env:homedrive$env:homepath "$env:homedrive$env:homepath"

В PowerShell для имен переменных среды не различаются верхний и нижний регистр.

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

get-childitem  окружение :

Назначение: Юникс

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

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

ПЕРЕМЕННАЯ = значение # (вокруг знака равенства не должно быть пробелов)экспортировать VARIABLE # для Bourne и связанных с ним оболочек
экспорт ПЕРЕМЕННАЯ = значение # для ksh , bash и связанных оболочек
setenv VARIABLE  значение # для 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 :

 НАБОР  /? ПОМОЩЬ НАСТРОЙКА СЕТЛОКАЛЬНЫЙ /? ПОМОГИТЕ УСТАНОВИТЬСЯ


В PowerShell присваивание соответствует синтаксису, аналогичному Unix:

 $env:VARIABLE  =  "ЗНАЧЕНИЕ"

Примеры

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

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

Юникс

$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] [nb 1] не ожидают, что содержимое переменных среды превысит 128 символов. DR-DOS COMMAND.COMподдерживает переменные среды длиной до 255, 4DOS — даже до 512 символов. [10] Поскольку в MS-DOS 7.0 и выше COMMAND.COMможно настроить (через /L:128..1024) поддержку командных строк длиной до 1024 символов, переменные среды также должны содержать не менее 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 . или используется DTA по умолчанию. Хотя 4DOS поддерживает более длинные командные строки, COMMAND.COMпо-прежнему поддерживает только максимум 126 символов в приглашении по умолчанию (если не переопределено с помощью /U:128..255указания размера буфера командной строки), но, тем не менее, внутренние командные строки могут стать длиннее за счет расширения переменных (в зависимости от /L:128..1024чтобы указать размер внутреннего буфера). В дополнение к байту длины командной строки в PSP, командная строка PSP обычно ограничена ASCII-13 , а командные строки длиной более 126 символов обычно усекаются путем вставки ASCII-13 в позицию 127, [12] но на это нельзя полагаться во всех сценариях. [12] [nb 2] Эта переменная будет подавлена ​​для внешних команд, вызываемых с предшествующим @символом -, например, в @XCOPY ...целях обратной совместимости и для минимизации размера среды при загрузке неперемещаемых резидентных программ завершения и пребывания . Некоторые бета-версии 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под DOS ПК. DR-DOS дополнительно позволяет переопределить системный разделитель тысяч, отображаемый как в fe SET NO_SEP=.. [10]
%PATH%(поддерживается начиная с DOS 2.0)
Эта переменная содержит список каталогов, разделенных точкой с запятой, в которых интерпретатор команд будет искать исполняемые файлы . Эквивалент переменной Unix $PATH(но некоторые приложения 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т . д., файлы определенного класса, такие как , или глобальные файлы, такие как , , , или ), используемые командами and и различными программами DR-DOS, такими как , , , , , , / , , , , , или . [11] Он не должен содержать длинные имена файлов .VIEWMAX.INIFASTBACK.CFGCOLORS.INIDRDOS.ININWDOS.INIOPENDOS.INIDOS.INIINSTALLSETUPDISKOPTDOSBOOKEDITFBXFILELINKLOCKSECURITY.OVLNWLOGIN.EXESERNOTASKMAXTASKMGRVIEWMAXUNDELETE
%DRCOMSPEC%
Эта переменная опционально содержит альтернативный путь к командному процессору, имеющий приоритет над путем, определенным в переменной %COMSPEC%, опционально включая пароли файлов и каталогов . Альтернативно, он может содержать специальное значение " ON" или " 1", чтобы принудительно использовать переменную %COMSPEC%даже в тех сценариях, где %COMSPEC%переменная может указывать на неправильный процессор командной строки, например, при запуске некоторых версий DR- Команда DOS SYSпод чужой операционной системой. [22]
%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 ), " " ( EZ-DOS 3.41 ), " " и " " ( PalmDOS 1.0 ), " " ( Novell DOS 7 ), " " ( Novell DOS 7 Beta), " " ( Caldera OpenDOS 7.01 ). , Caldera DR-OpenDOS 7.02 ), " " ( Concurrent DOS , Concurrent DOS XM ), " " ( Concurrent PC DOS ), " " ( Concurrent DOS 386 ), " " ( DR Multiuser DOS ), " " ( CCI Multiuser DOS ) , [23] " " ( IMS Multiuser DOS ), " " ( REAL/32 ). [11] [25] MS-DOS также ищет значение " ". [25] См. также переменную среды с таким же именем, позже представленную в семействе Windows NT .EZDOSPALMDOSNetWare PalmDOSNWDOSNWDOS7OPENDOSCDOSCPCDOSCDOS386DRMDOSMDOSIMSMDOSREAL32INTERSVRDRDOS%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 , которая будет использоваться многозадачностью DR-DOS TASKMGR, переопределяя процедуру по умолчанию для поиска файла. [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), например fe в SET $CLS=\033[2J. Чтобы отправить саму обратную косую черту (" \"), ее можно удвоить " \\". [11] [20] [23]
%$DIR%
Поддерживается DOS Plus , принимающим значения «L» (длинный) или «W» (широкий) для изменения макета списков каталогов по умолчанию с помощью DIR . Можно переопределить с помощью параметров командной строки /Lили /W. [20] [19] См . также аналогичную переменную среды %DIRCMD%и DIRпараметры DR-DOS COMMAND.COM. [11]/C/R
%$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). [18]%$LENGTH%%$WIDTH%
%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%
Содержит полный путь к каталогу данных приложения вошедшего в систему пользователя. Не работает в 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-битным (это вызвано 64-битным перенаправлением Windows-on-Windows ).
%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 по умолчанию установлены в « ». Информацию о других версиях Windows см. в записи выше.C:\Windows%SystemRoot%

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

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

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

Значения по умолчанию

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

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

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

Переменные псевдосреды

Командные процессоры в DOS и Windows также поддерживают переменные псевдосреды. Это значения, которые извлекаются как переменные среды, но на самом деле не сохраняются в среде, а вычисляются по запросу.

ДОС

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

Так называемые параметры замены или заменяемые параметры (терминология 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] в том числе определяемые пользователем. Они работают так же, как внутренние переменные , но могут принимать дополнительные параметры (fe %@EVAL[]%) и даже изменять состояние системы в зависимости от своей функции.

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

%AM_PM%
Эта псевдопеременная возвращает статус текущего времени до или после полудня. Возвращаемая строка зависит от версии DR-DOS, зависящей от локали, например " am" или " pm" в английской версии. Она напоминает переменную-идентификатор с таким же именем в сценариях входа в систему Novell NetWare .
%DAY%
Эта псевдопеременная возвращает дни текущей даты в двузначном формате с ведущими нулями, например " 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". [29] [30] См. также псевдопеременную с таким же названием %ERRORLEVEL%в Windows и IF ERRORLEVELусловную команду.
%ERRORLVL%
В DR-DOS 7.02 и выше эта псевдопеременная возвращает последний уровень ошибки в трехзначном формате с ведущими нулями, например " 000".." 255". [29] [30] В многопользовательской DOS это настоящая переменная среды, автоматически обновляемая оболочкой до кода возврата завершающих программ. [23] См. также соответствующую псевдопеременную %ERRORLEVEL%в DR-DOS и IF ERRORLEVELкоманду.
%GREETING_TIME%
Эта псевдопеременная возвращает время приветствия трехуровневого дня. Возвращаемая строка зависит от версии DR-DOS, зависящей от локали, например " morning", " afternoon" или " evening" в английской версии. Она напоминает переменную-идентификатор с таким же именем в сценариях входа в систему Novell NetWare .
%HOUR%
Эта псевдопеременная возвращает часы текущего времени в 12-часовом формате без ведущих нулей, например " 1".." 12". Она напоминает переменную-идентификатор с таким же именем в сценариях входа в систему Novell NetWare .
%HOUR24%
Эта псевдопеременная возвращает часы текущего времени в 24-часовом формате в двухзначном формате с ведущими нулями, например " 00".." 23". Она напоминает переменную-идентификатор с таким же именем в сценариях входа в систему Novell NetWare . См. также аналогичную псевдопеременную %_HOUR%.
%MINUTE%
Эта псевдопеременная возвращает минуты текущего времени в двухзначном формате с ведущими нулями, например " 00".." 59". Она напоминает переменную-идентификатор с таким же именем в сценариях входа в систему Novell NetWare . См. также аналогичную псевдопеременную %_MINUTE%.
%MONTH%
Эта псевдопеременная возвращает месяцы текущей даты в двухзначном формате с ведущими нулями, например " 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%
Эта псевдопеременная возвращает секунды текущего времени в двухзначном формате с ведущими нулями, например " 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.COMначиная с DR-DOS 7.02. . См. также аналогичную переменную среды %$WIDTH%в DOS Plus.
%_COUNTRY%
Эта псевдопеременная возвращает текущий код страны системы (" 1".." 65534"), например " 1" для США, " " 44для Великобритании, " 49" для Германии, " 20049" с ISO 8601 , " 21049" с ISO 8601 и поддержкой евро . . [32] [33] Эта переменная была первоначально введена в 4DOS , [10] но также стала доступна COMMAND.COMначиная с DR-DOS 7.02. См. также CONFIG.SYSдирективу COUNTRY.
%_DAY%
Эта псевдопеременная возвращает дни текущей даты без ведущих нулей, например " 1".." 31". Эта переменная была первоначально введена в 4DOS [10] , но также стала доступна COMMAND.COMначиная с DR-DOS 7.02. См. также аналогичную псевдопеременную %DAY%.
%_HOUR%
Эта псевдопеременная возвращает часы текущего времени в 24-часовом формате без ведущих нулей, например " 0".." 23". Эта переменная была первоначально введена в 4DOS [10] , но также стала доступна COMMAND.COMначиная с DR-DOS 7.02. См. также аналогичную псевдопеременную %HOUR24%.
%_MINUTE%
Эта псевдопеременная возвращает минуты текущего времени без ведущих нулей, например " 0".." 59". Эта переменная была первоначально введена в 4DOS [10] , но также стала доступна COMMAND.COMначиная с DR-DOS 7.02. См. также аналогичную псевдопеременную %MINUTE%.
%_MONTH%
Эта псевдопеременная возвращает месяцы текущей даты без ведущих нулей, например " 1".." 12". Эта переменная была первоначально введена в 4DOS [10] , но также стала доступна COMMAND.COMначиная с DR-DOS 7.02. См. также аналогичную псевдопеременную %MONTH%.
%_ROWS%
Эта псевдопеременная возвращает текущее количество строк экрана в зависимости от режима отображения, например " " 25, " 43", " 50" и т. д. Эта переменная первоначально была введена в 4DOS , [10] , но также стала доступна COMMAND.COMначиная с DR-DOS 7.02. . См. аналогичную переменную среды %$LENGTH%в DOS Plus.
%_SECOND%
Эта псевдопеременная возвращает секунды текущего времени без ведущих нулей, например " 0".." 59". Эта переменная была первоначально введена в 4DOS [10] , но также стала доступна COMMAND.COMначиная с DR-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.EXEfe " 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-подобные оболочки имеют схожие динамически генерируемые переменные, $RANDOMхорошо известным примером является bash. Однако, поскольку в этих оболочках используется концепция локальных переменных, вместо этого они описываются как специальные локальные переменные. [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. ^ Роббинс, Арнольд; Биб, Нельсон Х.Ф. (май 2005 г.). Апанди, Татьяна; Рэндал, Эллисон; Витвер, Адам (ред.). Классические сценарии оболочки (1-е изд.). О'Рейли . ISBN 978-0-596-00595-5.
  2. ^ "unset - сбросить значения и атрибуты переменных и функций – ". Справочник по командам и утилитам, Единая спецификация UNIX - Базовые спецификации открытой группы, IEEE Std 1003.1-2008 (выпуск 7 изд.). IEEE и Открытая группа . 2016 [2001]. Архивировано из оригинала 18 декабря 2017 г. Проверено 18 декабря 2017 г.
  3. ^ fgrose (31 июля 2015 г.) [2011]. «Неустановленная встроенная команда». Bash Hackers Wiki . Архивировано из оригинала 18 декабря 2017 г. Проверено 18 декабря 2017 г.
  4. ^ Джейкобс, Майк; Корень, Александр; Сатран, Майкл (14 ноября 2017 г.). «Хранить и получать настройки и другие данные приложения». Майкрософт . Архивировано из оригинала 18 декабря 2017 г. Проверено 18 декабря 2017 г.
  5. ^ Раймонд, Эрик (2 августа 2002 г.) [первоначально опубликовано в 2001 г.]. «Проект БРАУЗЕР». Архивировано из оригинала 21 сентября 2019 г. Проверено 21 октября 2020 г.
  6. ^ "LWN - Развитие". LWN.net . 01.02.2001. Архивировано из оригинала 08 февраля 2019 г. Проверено 21 октября 2020 г. Стандартизация переменной среды БРАУЗЕР. Эрик Рэймонд предлагает использовать новую переменную среды BROWSER в дополнение к существующим переменным PAGER, MAILER и EDITOR. Эта попытка тестируется как эксперимент по взлому социальных систем.
  7. ^ Шпачек, Михал (19 января 2020 г.) [Первая версия опубликована в 2013 г.]. «Env::Браузер-0.06». Metacpan.org . Архивировано из оригинала 21 октября 2020 г. Проверено 21 октября 2020 г. Env::Browser — обработать переменную среды $BROWSER и запустить веб-браузер.
  8. ^ «Веб-браузер — Удобный контроллер веб-браузера» . docs.python.org . Архивировано из оригинала 13 октября 2020 г. Проверено 21 октября 2020 г.
  9. ^ «Веб-браузер по умолчанию — Debian Wiki». wiki.debian.org . 10.06.2020. Архивировано из оригинала 21 октября 2020 г. Проверено 21 октября 2020 г. Переменная среды BROWSER может быть установлена ​​так, чтобы[…] всегда выбирать желаемый браузер.
  10. ^ abcdefghijklmnopqrstu vwxyz aa ab Brothers, Хардин; Роусон, Том ; Конн, Рекс К .; Пол, Матиас Р.; Дай, Чарльз Э.; Георгиев, Лучезар И. (27 февраля 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. ^ аб Пол, Матиас Р. (2 октября 1997). «Обновление Caldera OpenDOS 7.01/7.02 Alpha 3 IBMBIO.COM README.TXT». Архивировано из оригинала 4 октября 2003 г. Проверено 29 марта 2009 г.[3]
  14. ^ Пол, Матиас Р. (27 мая 1997 г.) [1996]. «СЕТЭНВ v1.11». Архивировано из оригинала 15 февраля 2009 г. Проверено 9 августа 2019 г. […] SETENV […], чтобы скрыть, а затем восстановить […] предварительную среду […] Используя SETENV.COM, вы можете сэкономить несколько килобайт редкой памяти DOS […] в зависимости от количества драйверов, загруженных INSTALL = / INSTALLHIGH= / HIINSTALL= и текущий размер предварительной среды. […] эту оригинальную […] функцию нельзя найти ни в одном известном менеджере/оптимизаторе памяти. […]
  15. ^ Пол, Матиас Р. (6 апреля 2002 г.). «Re: [fd-dev] АНОНС: CuteMouse 2.0 альфа 1». freedos-dev . Архивировано из оригинала 07 февраля 2020 г. Проверено 7 февраля 2020 г. […] В процедуре подготовки TSR CTMOUSE.ASM я нашел комментарий относительно нулевого окружения. […] DESQview или DRDOS с нулевым окружением? […] освободить блок среды […] пропустить, если возникнут проблемы […] нулевая панель для утилит в стиле MEM […]
  16. ^ «Руководство пользователя PTS-DOS 2000 Pro» (PDF) . Архивировано (PDF) из оригинала 12 мая 2018 г. Проверено 12 мая 2018 г.
  17. ^ Пол, Матиас Р. (07 октября 2002 г.). «Re: Запустить COM-файл». Группа новостей : alt.msdos.programmer. Архивировано из оригинала 3 сентября 2017 г. Проверено 3 сентября 2017 г.[4]
  18. ^ abcdef Datalight, Inc .; ГПвНО (апрель 2005 г.) [1999]. «Руководство пользователя Datalight ROM-DOS» (PDF) . Даталайт, Инк.: 3010-0200-0716. Архивировано (PDF) из оригинала 20 марта 2019 г. Проверено 16 сентября 2018 г.
  19. ^ abcdefghi Котулла, Мартин (ноябрь 1987 г.). «Фон CP/M для MS-DOS, часть 11» (PDF) . Профессиональные вычисления (ПК) - Schneider International (на немецком языке). 3 (11): 100–103. Архивировано (PDF) из оригинала 24 апреля 2019 г. Проверено 20 мая 2018 г.
  20. ^ abcdefghijklmn Пол, Матиас Р. (26 марта 2002 г.). «Обновлено CLS». список рассылки freedos-dev. Архивировано из оригинала 4 октября 2018 г. Проверено 6 августа 2014 г.
  21. ^ abcdefgh Руководство пользователя Caldera DR-DOS 7.02. Caldera, Inc., 1998 г. [1993, 1997]. Архивировано из оригинала 4 ноября 2016 г. Проверено 10 августа 2013 г.
  22. ^ abcd Пол, Матиас Р. (14 августа 2017 г.) [07 августа 2017 г.]. «Продолжение саги о Windows 3.1 в расширенном режиме на OmniBook 300». MoHPC — Музей калькуляторов HP . Архивировано из оригинала 01 мая 2018 г. Проверено 1 мая 2018 г. […] установите DRSYS=ON (необязательно, чтобы сообщить SYS, что вы знаете о том, что запускаете его во внешней среде, и хотите продолжить в любом случае, без необходимости индивидуального подтверждения некоторых предупреждений и дополнительных информационных экранов, отображаемых в этом сценарии, в противном случае) […]
  23. ^ abcdefghi CCI Multiuser DOS 7.22 GOLD Интернет-документация . Concurrent Controls, Inc. (CCI). 10 февраля 1997 г. ПОМОЩЬ.HLP.
  24. ^ Руководство по установке CCI Multiuser DOS 7.22 GOLD . Concurrent Controls, Inc. (CCI). 10 февраля 1997 г. ПРИНТДОК.HLP.
  25. ^ abc Пол, Матиас Р. (20 февраля 2002 г.). «Как обнаружить FreeCOM/FreeDOS в пакетном режиме?». Список рассылки freedos-dev. Архивировано из оригинала 06.11.2018 . Проверено 6 августа 2014 г.
  26. ^ https://learn.microsoft.com/en-us/windows/deployment/usmt/usmt-recounced-environment-variables
  27. ^ Бринк, Шон (17 ноября 2018 г.). «Переменные среды в Windows 10 — полный список переменных среды в Windows 10». Форумы Windows Ten . Архивировано из оригинала 27 марта 2019 г. Проверено 24 апреля 2019 г.
  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 сентября 2017 г. по адресу archive.today (Примечание. BATTIPS.TXT является частью MPDOSTIP.ZIP. Предоставленная ссылка указывает на более старую версию BATTIPS.TXT, преобразованную в HTML. файл.) [7]
  30. ^ abc Ауэр, Эрик; Пол, Матиас Р.; Холл, Джим (24 декабря 2015 г.) [31 декабря 2003 г.]. «Уровни ошибок MS-DOS». Архивировано из оригинала 24 декабря 2015 г.
  31. ^ Пол, Матиас Р. (9 января 1998 г.). DELTREE.BAT R1.01 Расширенное удаление файлов и каталогов. Caldera, Inc. Архивировано из оригинала 8 апреля 2019 г. Проверено 08 апреля 2019 г.
  32. ^ ab DR-DOS 7.03 WHATSNEW.TXT — Изменения с DR-DOS 7.02 на DR-DOS 7.03. Кальдера, Инк. 24 декабря 1998 г. Архивировано из оригинала 8 апреля 2019 г. Проверено 08 апреля 2019 г.
  33. ^ Пол, Матиас Р. (10 июня 2001 г.) [1995]. «Формат файла DOS COUNTRY.SYS» (файл COUNTRY.LST) (изд. 1.44). Архивировано из оригинала 20 апреля 2016 г. Проверено 20 августа 2016 г.
  34. ^ Аллен, Уильям; Аллен, Линда. «Windows 95/98/ME ОШИБКИ». Архивировано из оригинала 7 июля 2011 г.
  35. ^ «Переменные оболочки». Справочное руководство по Bash .

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

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