환경 변수

환경 변수(環境 變數, 영어: environment variable)는 컴퓨터에서 실행되는 프로세스의 동작 방식에 영향을 줄 수 있는 사용자 정의 가능한 값이다. 환경 변수는 프로세스가 실행되는 환경의 일부이다. 예를 들어, 실행 중인 프로세스는 TEMP 환경 변수의 값을 쿼리하여 임시 파일을 저장할 적절한 위치를 찾거나, HOME 또는 USERPROFILE 변수를 통해 해당 프로세스를 실행하는 사용자의 디렉터리 구조를 찾을 수 있다.

환경 변수는 1979년 버전 7 유닉스에서 현대적인 형태로 도입되었으며, 이후 리눅스 및 macOS를 포함한 모든 유닉스 운영체제 계열과 변형판에 포함되었다. 1982년 PC DOS 2.0부터는 마이크로소프트 윈도우와 OS/2를 포함한 모든 후속 마이크로소프트 운영체제에서도 환경 변수를 기능으로 포함하게 되었으나, 구문이나 사용법, 표준 변수 이름은 다소 차이가 있다.

설계

모든 유닉스 및 유닉스 계열 시스템과 윈도우에서 각 프로세스는 고유한 환경 변수 집합을 가진다. 기본적으로 프로세스가 생성될 때, 부모 프로세스가 자식 프로세스를 생성할 때 명시적으로 변경하지 않는 한, 부모 프로세스의 런타임 환경 복사본을 상속받는다. API 수준에서 이러한 변경은 fork와 exec를 실행하는 사이에 이루어져야 한다. 또는 bash와 같은 명령줄 인터페이스에서 사용자는 env를 통해 간접적으로 명령을 호출하거나 ENVIRONMENT_VARIABLE=VALUE <command> 표기법을 사용하여 특정 명령 호출에 대한 환경 변수를 변경할 수 있다. 실행 중인 프로그램은 구성 목적으로 환경 변수의 값에 액세스할 수 있다.

셸 스크립트와 배치 파일은 환경 변수를 사용하여 자식 프로세스에 데이터와 기본 설정을 전달한다. 또한 셸 스크립트에서 나중에 참조할 임시 값을 저장하는 데 사용할 수도 있다. 그러나 유닉스에서는 비내보내기 변수(non-exported variables)가 프로세스 외부로 유출되지 않으므로 이를 선호한다.

유닉스에서 스크립트나 컴파일된 프로그램 내에서 변경된 환경 변수는 해당 프로세스와 잠재적인 자식 프로세스에만 영향을 미친다. 부모 프로세스나 관련 없는 다른 프로세스는 영향을 받지 않는다. 마찬가지로 도스나 윈도우 배치 파일 내에서 변수 값을 변경하거나 제거하면, 각각 COMMAND.COM 또는 CMD.EXE가 존재하는 동안에만 변수가 변경된다.

유닉스에서 환경 변수는 일반적으로 시스템 부팅 시 시스템 Init 셸 스크립트에 의해 초기화되며, 시스템의 모든 다른 프로세스에 상속된다. 사용자는 자신이 사용하는 명령줄 셸의 프로필 스크립트에서 이를 보강할 수 있으며, 흔히 그렇게 한다. 마이크로소프트 윈도우에서 각 환경 변수의 기본값은 윈도우 레지스트리에 저장되거나 AUTOEXEC.BAT 파일에 설정된다.

유닉스에서 setuid 프로그램은 호출자가 선택한 환경을 전달받지만, 호출자와는 다른 권한으로 실행된다. 동적 링커는 일반적으로 $LD_LIBRARY_PATH 및 $LD_PRELOAD 환경 변수에 지정된 위치에서 코드를 로드하고 해당 프로세스의 권한으로 실행한다. 만약 setuid 프로그램이 이 작업을 수행한다면 호출자가 임의의 코드를 실행하여 권한을 남용할 수 있으므로 보안상 위험하다. 이러한 이유로 libc는 setuid 프로세스의 시작 시 이러한 환경 변수를 해제한다. setuid 프로그램은 일반적으로 알 수 없는 환경 변수를 해제하고 다른 변수를 확인하거나 적절한 값으로 설정한다.

일반적으로 환경 변수 모음은 키와 값이 모두 문자열인 연관 배열로 기능한다. 각 문자열 내 문자의 해석 방식은 시스템마다 다르다. 목록과 같은 데이터 구조를 표현해야 할 때는 콜론(유닉스 및 유닉스 계열에서 일반적) 또는 세미콜론(윈도우 및 도스에서 일반적)으로 구분된 목록을 사용하는 것이 일반적이다.

구문

변수는 스크립트와 명령줄 인터페이스 모두에서 사용할 수 있다. 일반적으로 변수 이름 앞이나 주위에 특수 기호를 배치하여 참조한다.

관례적으로 환경 변수 이름은 대문자로만 표기한다. 이는 환경 변수를 프로그래밍 코드에서 사용되는 다른 변수 및 식별자와 명확하게 구분하는 데 도움이 된다. 그럼에도 불구하고 환경 변수 이름의 대소문자 구분은 운영체제마다 다르다는 점에 유의해야 한다. 즉, 유닉스 계열 운영체제는 환경 변수 이름의 대소문자를 구분하지만, 도스, OS/2, 윈도우는 구분하지 않는다.

유닉스

대부분의 유닉스 및 유닉스 계열 명령줄 셸에서 환경 변수 값은 변수 이름 앞에 $ 기호를 붙여 가져온다. 필요한 경우 이름을 중괄호로 감쌀 수도 있다.

사용자 홈 디렉토리를 표시하려면 사용자는 다음과 같이 입력할 수 있다.

echo $HOME

유닉스 및 유닉스 계열 시스템에서 환경 변수의 이름은 대소문자를 구분한다.

env 명령은 모든 환경 변수와 그 값을 표시한다. printenv 명령을 사용하여 해당 변수 이름을 명령의 유일한 인수로 전달함으로써 단일 변수를 출력할 수도 있다.

도스, OS/2 및 윈도우

COMMAND.COM 및 CMD.EXE와 같은 도스, OS/2 및 윈도우 명령줄 인터프리터에서 환경 변수는 이름 앞뒤에 % 기호를 배치하여 가져온다.

도스, OS/2 및 윈도우 명령줄 인터프리터와 그 API에서는 환경 변수 이름에 대해 대문자와 소문자를 구분하지 않는다.

HOMEDRIVE라는 환경 변수에는 사용자 홈 디렉토리의 드라이브 문자(뒤에 : 콜론 포함)가 들어 있으며, HOMEPATH에는 해당 드라이브 내 사용자 홈 디렉토리의 전체 경로가 들어 있다.

따라서 홈 드라이브와 경로를 확인하려면 사용자는 다음과 같이 입력할 수 있다.

ECHO %HOMEDRIVE%%HOMEPATH%

SET 명령(인수 없음)은 모든 환경 변수와 그 값을 표시한다. 윈도우 NT 이후 버전에서 set은 특정 접두사로 시작하는 모든 변수를 출력하기 위해 해당 접두사를 명령의 유일한 인수로 사용할 수도 있다.

파워셸에서 사용자는 다음을 입력할 수 있다.

"$Env:HomeDrive$Env:HomePath"

또는 다음과 같은 중복된 표현 중 하나를 사용할 수 있다.

Write-Output "$Env:HomeDrive$Env:HomePath"
echo "$Env:HomeDrive$Env:HomePath"
write "$Env:HomeDrive$Env:HomePath"
return "$Env:HomeDrive$Env:HomePath"
Write-Host "$Env:HomeDrive$Env:HomePath"

파워셸에서는 환경 변수 이름의 대소문자를 구분하지 않는다.

다음 명령은 모든 환경 변수와 그 값을 표시한다.

Get-ChildItem env:

할당: 유닉스

env 및 set 명령을 사용하여 환경 변수를 설정할 수 있으며, 종종 셸에 직접 통합되어 있다.

다음 명령도 사용할 수 있지만, 사용 중인 셸에 따라 달라지는 경우가 많다.

VARIABLE=value         # (등호 주위에는 공백이 없어야 함)
export VARIABLE        # 본 셸 및 관련 셸용
export VARIABLE=value  # 콘셸, bash 및 관련 셸용
setenv VARIABLE value  # C 셸 및 관련 셸용

환경 변수가 어떻게 효과를 발휘하는지에 대한 몇 가지 간단한 원칙이 있다.

환경 변수는 설정된 프로세스 내부에서만 유효하다(local to the process). 두 개의 셸 프로세스가 생성되고 한 곳에서 환경 변수의 값이 변경되면, 그 변경 사항은 다른 프로세스에서 보이지 않는다.

자식 프로세스가 생성될 때, 부모 프로세스로부터 모든 환경 변수와 그 값을 상속받는다. 일반적으로 프로그램이 다른 프로그램을 호출할 때, 먼저 fork를 통해 자식 프로세스를 생성한 다음, 자식이 필요에 따라 환경을 조정하고 마지막으로 자식 프로세스가 호출할 프로그램으로 대체된다. 이 절차를 통해 호출하는 프로그램은 호출된 프로그램의 환경을 제어할 수 있다.

유닉스 셸에서 변수는 export 키워드 없이 할당될 수 있다. 이런 방식으로 정의된 변수는 set 명령으로 표시되지만, 셸에 의해서만 저장되고 다른 모든 프로세스에는 알려지지 않으므로 진정한 환경 변수는 아니다. printenv 명령은 이를 표시하지 않으며, 자식 프로세스도 이를 상속하지 않는다.

VARIABLE=value

접두사 구문은 현재 프로세스에 영향을 주지 않고 자식 프로세스로 "진정한" 환경 변수를 내보낸다.

VARIABLE=value program_name [arguments]

환경 변수의 지속성은 세션 전체 또는 시스템 전체일 수 있다.

unset은 본 셸 계열(sh, ksh, bash 등)과 C 셸 계열(csh, tcsh 등) 유닉스 셸 모두에서 구현된 내장 명령이다. 이는 셸 변수를 해제하여 메모리와 셸의 내보내진 환경에서 제거한다. 셸의 내부를 직접 조작하기 때문에 셸 내장 명령어로 구현된다. 읽기 전용 셸 변수는 해제할 수 없다. 읽기 전용 변수를 해제하려고 시도하면 unset 명령은 오류 메시지를 출력하고 0이 아닌 종료 코드를 반환한다.

할당: 도스, OS/2 및 윈도우

COMMAND.COM 및 CMD.EXE와 같은 도스, OS/2 및 윈도우 명령줄 인터프리터에서 SET 명령은 다음 인수를 사용하여 환경 변수와 값을 할당하는 데 사용된다.

 SET VARIABLE=value

환경 변수는 다음과 같이 제거한다.

 SET VARIABLE=

인수 없이 SET 명령을 실행하면 모든 환경 변수와 그 값이 표시된다. SET " "(공백 0개 이상)을 입력하면 내부 변수도 포함된다. CMD.EXE에서는 SETLOCAL 명령을 사용하여 전역이 아닌 로컬 변수를 할당할 수 있으며, ENDLOCAL을 사용하여 환경을 복원할 수 있다.

스위치 /?를 사용하여 내부 문서를 표시하거나, 뷰어 help를 사용한다.

 SET /?
 HELP SET
 SETLOCAL /?
 HELP SETLOCAL

파워셸에서의 할당은 유닉스와 유사한 구문을 따른다.

 $env:VARIABLE = "VALUE"

할당: PHP

PHP에서는 putenv() 함수를 사용해야 한다.

  putenv("VARIABLE_NAME"="VALUE");

예시

환경 변수의 예는 다음과 같다.

진정한 환경 변수

유닉스

$PATH
셸이 슬래시를 포함하지 않는 명령을 검색할 디렉토리의 콜론 구분 목록을 포함한다(슬래시가 있는 명령은 실행할 파일 이름으로 해석되며, 셸은 직접 해당 파일을 실행하려고 시도한다). 도스, OS/2 및 윈도우의 %PATH% 변수와 동일하다.
$HOME
사용자의 홈 디렉토리 위치를 포함한다. 현재 사용자의 홈 디렉토리는 C언어 함수 getpwuid 및 getuid를 통해서도 알 수 있지만, $HOME은 다양한 셸 스크립트(및 기타 컨텍스트)에서 편의를 위해 자주 사용된다. 환경 변수를 사용하면 사용자가 다른 디렉토리를 가리키도록 설정할 수도 있다.
$PWD
이 변수는 현재 디렉토리를 가리킨다. 인수 없이 호출했을 때의 pwd 명령 출력과 동일하다.
$DISPLAY
X11 프로그램이 기본적으로 사용해야 하는 디스플레이 식별자를 포함한다.
$LD_LIBRARY_PATH
동적 링커가 있는 많은 유닉스 시스템에서, exec 이후 프로세스 이미지를 빌드할 때 다른 디렉토리를 검색하기 전에 동적 링커가 공유 객체를 검색해야 하는 디렉토리의 콜론 구분 목록을 포함한다.
$LIBPATH 또는 $SHLIB_PATH
구형 유닉스 버전에서 일반적으로 사용되던 $LD_LIBRARY_PATH의 대안이다.
$LANG, $LC_ALL, $LC_...
$LANG은 기본 로케일을 설정하는 데 사용된다. 예를 들어, 로케일 값이 pt_BR이면 언어는 (브라질) 포르투갈어로 설정되고 관련이 있는 경우 브라질 관습이 사용된다. 현지화의 다양한 측면은 개별 $LC_ 변수($LC_CTYPE, $LC_COLLATE, $LC_DATE 등)에 의해 제어된다. $LC_ALL을 사용하면 모든 측면에 대해 동일한 로케일을 강제할 수 있다.
$TZ
시간대를 참조한다. 시간대 자체를 지정하거나 파일(/usr/share/zoneinfo 내)을 참조하는 등 여러 형식이 가능하다.
$BROWSER
사용자가 웹 브라우저를 선호하는 목록을 콜론으로 구분하여 포함하며, URL의 콘텐츠를 보여줄 필요가 있는 프로그램에서 사용한다. 목록에 있는 브라우저들은 첫 번째로 성공할 때까지 순서대로 시도한다. 이 방식은 환경에 따른 대체(fallback) 동작을 허용한다. 예를 들어, X11 환경에서는 그래픽 브라우저(예: 파이어폭스)를 사용할 수 있지만, 콘솔 환경에서는 텍스트 기반 브라우저(예: 링크스)를 사용할 수 있다. %s 토큰을 포함하여 URL이 배치될 위치를 지정할 수 있으며, 그렇지 않은 경우 첫 번째 인수로 URL을 전달하여 브라우저가 실행되어야 한다.

도스

도스 하에서 마스터 환경은 기본 명령 처리기에 의해 제공되며, 처음 로드될 때 CONFIG.SYS에 정의된 사전 환경(pre-environment)을 상속받는다. 크기는 160 바이트에서 32767 바이트 사이의 COMMAND /E:n 매개변수를 통해 구성할 수 있다. 자식 프로세스에 상속되는 로컬 환경 세그먼트는 일반적으로 포함된 내용의 크기만큼 줄어든다. 일부 명령줄 처리기(예: 4DOS)는 보조 셸을 시작할 때 사용할 수 있는 최소한의 여유 환경 공간을 정의할 수 있다. 환경 변수의 내용은 저장 시 변경되지 않지만, 이름은(% 제외) 항상 대문자로 변환된다. 단, DR DOS 6.0 이상에서 CONFIG.SYS 지시어 SET를 통해 정의된 사전 환경 변수는 예외이며, DR-DOS 7.02 이상에서 SWITCHES=/L(소문자 이름 허용)을 사용했을 때만 가능하다. 원칙적으로 MS-DOS 7.0 이상도 소문자 변수 이름(%windir%)을 지원하지만, 사용자가 이를 정의할 방법은 제공하지 않는다. 소문자를 포함하는 환경 변수 이름은 일반 환경 변수처럼 환경에 저장되지만, 대문자 변수만 기대하도록 작성된 대부분의 도스 소프트웨어에는 보이지 않는다. 일부 명령 처리기는 변수 이름의 최대 길이를 80자로 제한한다. 원칙적으로 환경 세그먼트의 크기에 의해서만 제한되지만, 일부 도스 및 16비트 윈도우 프로그램은 환경 변수의 내용이 128자를 초과할 것으로 기대하지 않는다. DR-DOS COMMAND.COM은 최대 255자, 4DOS는 최대 512자까지 지원한다. COMMAND.COM은 MS-DOS 7.0 이상에서 내부적으로 최대 1024자까지 명령줄을 지원하도록 구성(/L:128..1024를 통해)할 수 있으므로, 환경 변수 역시 최소 1024자를 포함할 것으로 예상해야 한다. DR-DOS의 일부 버전에서는 드라이버에 전달되는 환경(설치 후 환경이 필요 없는 경우가 많음)을 SETENV 또는 INSTALL[HIGH]/LOADHIGH 옵션 /Z(환경 제로화), /D[:loaddrive](대체 드라이브, 예: B:TSR.COM) 및 /E(프로그램 위로 환경 재배치)를 통해 축소하거나 재배치하여 드라이버의 실제 상주 메모리 풋프린트를 최소화할 수 있다.

배치 모드에서 존재하지 않는 환경 변수는 길이가 0인 문자열로 대체된다.

표준 환경 변수 또는 예약된 환경 변수는 다음과 같다.

%APPEND%(도스 3.3부터 지원)
이 변수는 파일을 검색할 디렉토리의 세미콜론 구분 목록을 포함한다. 일반적으로 APPEND /E 명령을 통해 변경되며, 이 명령은 디렉토리 이름이 대문자로 변환되도록 보장한다. 일부 도스 소프트웨어는 실제로 이름이 대문자로 저장되고 목록의 길이가 121자를 초과하지 않을 것을 기대하므로, SET 명령을 통해 수정하지 않는 것이 좋다. 공백이나 기타 특수 문자가 포함된 긴 파일 이름은 따옴표(")로 묶으면 안 된다.
%CONFIG%(MS-DOS 6.0 및 PC DOS 6.1부터 지원, Datalight ROM-DOS도 지원)
이 변수는 현재 선택된 부팅 구성의 기호 이름을 보유한다. 기본 명령 처리기를 시작하기 전에 도스 BIOS(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자를 초과하는 명령줄은 일반적으로 127 위치에 ASCII-13이 삽입되어 잘린다. 하지만 모든 시나리오에서 이를 신뢰할 수는 없다. 이 변수는 @XCOPY ...와 같이 @ 기호로 시작하여 호출되는 외부 명령에 대해서는 하위 호환성 및 상주하지 않는 종료 후 상주 프로그램 로드 시 환경 크기를 최소화하기 위해 억제된다. 윈도우 시카고의 일부 베타 버전은 %CMDLINE%을 사용하여 전체 명령줄 대신 126자를 초과하는 명령줄의 나머지 부분만 저장했다.
%COMSPEC%(도스 2.0부터 지원)
이 변수는 명령 처리기에 대한 전체 8.3 경로(일반적으로 C:\COMMAND.COM 또는 C:\DOS\COMMAND.COM)를 포함한다. 긴 파일 이름을 포함해서는 안 되지만, DR-DOS에서는 파일 및 디렉토리 암호를 포함할 수 있다. 기본 명령 처리기가 자신을 가리키도록 설정하며(일반적으로 CONFIG.SYS 지시어 SHELL 설정을 반영), 명령 처리기의 상주 부분은 더 큰 프로그램 실행 후 디스크에서 일시적인 부분을 다시 로드할 수 있다. 이 값은 실행 시간에 구성 변경을 반영하기 위해 변경할 수 있으며, 명령 처리기가 다른 위치에서 자신을 다시 로드하도록 요구할 수 있다. 이 변수는 보조 셸을 시작할 때도 사용된다.
%COPYCMD%(MS-DOS 6.2 및 PC DOS 6.3부터 지원, Datalight ROM-DOS도 지원)
COPY, XCOPY 및 MOVE 명령에 대해 /Y 스위치(쿼리 시 "예"로 가정)를 기본값으로 지정할 수 있다. 기본값인 /Y는 명령줄에 /-Y 스위치를 제공하여 재정의할 수 있다. /Y 스위치는 확인 요청 없이 기존 파일을 교체하도록 명령한다.
%DIRCMD%(MS-DOS 5.0 및 PC DOS 5.0부터 지원, Datalight ROM-DOS도 지원)
파일 사양을 포함하여 DIR 명령에 대한 사용자 지정 기본 매개변수를 지정할 수 있다. 사전 설정된 기본 스위치는 명령줄에서 반대 스위치를 제공하여 재정의할 수 있다. 예를 들어, %DIRCMD%에 /W 스위치가 포함되어 있으면 명령줄에서 DIR /-W를 사용하여 재정의할 수 있다. 이는 도스 플러스 환경의 %$DIR% 변수와 유사하며, DR-DOS COMMAND.COM의 /C 또는 /R 스위치를 통해 DIR 기본 스위치를 정의하는 시설과 유사하다. %DIRCMD%는 노벨 도스 7 이상에서 외부 SDIR.COM/DIR.COM Stacker 명령에서도 지원된다.
%LANG%(MS-DOS 7.0부터 지원)
일부 도구에서 다국어 메시지 로케일을 전환하기 위해 이 변수를 지원한다.
%LANGSPEC%(MS-DOS 7.0부터 지원)
일부 도구에서 다국어 메시지 로케일을 전환하기 위해 이 변수를 지원한다.
%NO_SEP%(PC DOS 6.3 및 DR-DOS 7.07부터 지원)
이 변수는 다양한 명령 메시지에서 천 단위 구분 기호 표시를 제어한다. 기본적으로 발행되지만 PC DOS에서는 SET NO_SEP=ON 또는 SET NO_SEP=1을 지정하여 억제할 수 있다. DR-DOS는 추가적으로 시스템의 천 단위 구분 기호를 재정의할 수 있도록 허용한다(예: SET NO_SEP=.).
%PATH%(도스 2.0부터 지원)
이 변수는 명령 해석기가 실행 파일을 검색할 디렉토리의 세미콜론 구분 목록을 포함한다. 유닉스 $PATH 변수와 동일하다(단, 일부 도스 및 윈도우 애플리케이션은 유닉스 계열 시스템의 $LD_LIBRARY_PATH와 유사하게 데이터 파일을 검색하는 데 이 목록을 사용하기도 한다). 일반적으로 PATH(또는 MS-DOS 6.0에서 PATH /E) 명령을 통해 변경되며, 이 명령은 디렉토리 이름이 대문자로 변환되도록 보장한다. 일부 도스 소프트웨어는 이름이 대문자로 저장되고 목록의 길이가 123자를 초과하지 않을 것을 기대하므로, SET 명령을 통해 수정하지 않는 것이 좋다. 공백이나 기타 특수 문자가 포함된 긴 파일 이름은 따옴표(")로 묶으면 안 된다. 기본적으로 현재 디렉토리를 먼저 검색하지만, 4DOS와 같은 일부 명령줄 처리기는 이 검색 순서를 재정의하기 위해 목록에 "."(현재 디렉토리)를 포함할 수 있도록 허용한다. 일부 도스 프로그램은 이 확장과 호환되지 않는다.
%PROMPT%(도스 2.0부터 지원)
이 변수는 프롬프트의 표시를 정의하는 $ 토큰화 문자열을 포함한다. 일반적으로 PROMPT 명령을 통해 변경된다.
%TEMP%(및 %TMP%)
이 변수들은 임시 파일을 저장해야 하는 디렉토리의 경로를 포함한다. 운영체제 도구는 일반적으로 %TEMP%만 사용하지만, 타사 프로그램은 %TMP%도 사용한다. 일반적으로 %TEMP%가 %TMP%보다 우선순위가 높다.

DR-DOS 계열은 다음과 같은 추가 표준 환경 변수를 지원한다.

%BETA%
이 변수는 보조 셸 시작 시 COMMAND.COM의 일부 버전(DR DOS 3.41 포함)에서 표시되는 선택적 메시지를 포함한다.
%DRDOSCFG%/%NWDOSCFG%/%OPENDOSCFG%
INSTALL 및 SETUP 명령과 DISKOPT, DOSBOOK, EDIT, FBX, FILELINK, LOCK, SECURITY.OVL/NWLOGIN.EXE, SERNO, TASKMAX, TASKMGR, VIEWMAX 또는 UNDELETE와 같은 다양한 DR-DOS 프로그램에서 사용하는 .INI 및 .CFG 구성 파일(예: TASKMGR.INI, TASKMAX.INI, VIEWMAX.INI, FASTBACK.CFG 등, 클래스별 파일(예: COLORS.INI) 또는 전역 파일(예: DRDOS.INI, NWDOS.INI, OPENDOS.INI 또는 DOS.INI))을 검색할 디렉토리(뒤에 "\" 없음)를 포함한다. 긴 파일 이름을 포함해서는 안 된다.
%DRCOMSPEC%
이 변수는 선택적으로 %COMSPEC% 변수에 정의된 경로보다 우선하는 명령 처리기에 대한 대체 경로를 보유하며, 선택적으로 파일 및 디렉토리 암호를 포함할 수 있다. 또는 %COMSPEC% 변수가 잘못된 명령줄 처리기를 가리킬 수 있는 시나리오(예: 타 운영체제 하에서 DR-DOS의 일부 SYS 명령 버전을 실행할 때)에서도 %COMSPEC% 변수의 사용을 강제하기 위해 "ON" 또는 "1"이라는 특수 값을 보유할 수 있다.
%DRSYS%
이 변수를 "ON" 또는 "1"로 설정하면, DR-DOS SYS 명령의 일부 버전이 경고를 표시하는 대신 타 운영체제 하에서도 작동하도록 강제한다.
%FBP_USER%
노벨 도스 7 하에서 FastBack 명령 FBX 및 {user}.FB 구성 파일에서 사용되는 사용자 이름을 지정한다.
%HOMEDIR%
이 변수는 DR-DOS(DR DOS 5.0 및 DR DOS 6.0|6.0 포함) 하에서 홈 디렉토리를 포함할 수 있다.
%INFO%
DR-DOS COMMAND.COM의 일부 버전에서 이 변수는 PROMPT 명령의 $I 토큰에 의해 표시되는 문자열을 정의한다. 예를 들어 보조 셸을 종료하는 방법을 사용자에게 알리는 데 사용할 수 있다.
%LOGINNAME%
DR-DOS COMMAND.COM의 일부 버전에서 이 변수는 노벨 넷웨어용 로그인 스크립트 등에 의해 설정된 PROMPT 명령의 $U 토큰에 의해 표시되는 사용자 이름을 정의한다. 유사하게 명명된 의사 변수 %LOGIN_NAME%도 참조하라.
%MDOS_EXEC%
멀티유저 도스 하에서 이 변수는 "ON" 또는 "OFF" 값을 취할 수 있다. 활성화되면 운영체제는 도스 하에서와 동일한 도메인에서 보조 애플리케이션을 실행하는 대신 최대 도스 메모리를 사용할 수 있도록 도스 프로그램 영역(DPA)을 해제하여 보조 셸로 나갈 수 있도록 허용한다.
%NOCHAR%
이 변수는 [Y,N] 쿼리에서 "아니오"에 대해 메시지에 표시할 문자를 정의하는 데 사용되어 현재 시스템 기본값(영어 DR-DOS 버전에서 일반적으로 "N")을 재정의한다. 문자열이 포함된 경우 대문자로 변환된 첫 번째 문자만 사용된다. 일부 명령은 쿼리 시 자동적으로 "예"를 가정하여 이러한 프롬프트를 억제하는 명령줄 매개변수 /Y도 지원한다. 하지만 매개변수 /Y:yn을 사용하여 "예"/"아니오" 문자를 지정하면(따라서 모든 %NOCHAR% 설정을 재정의하면) 쿼리는 억제되지 않는다. 관련 CONFIG.SYS 지시어 NOCHAR 및 환경 변수 %YESCHAR%도 참조하라.
%NOSOUND%
이 변수를 "ON" 또는 "1"로 설정하면 일부 DR-DOS 명령이 특정 상황에서 발행하는 기본 신호음이 비활성화된다. 특정 신호음을 활성화하는 명령줄 옵션은 이 설정을 재정의한다.
%OS%
이 변수는 배치 작업 및 애플리케이션에서 서로 다른 도스 관련 운영체제를 구분하기 위해 운영체제 이름을 포함한다. 알려진 값으로는 "DOSPLUS"(도스 에뮬레이션의 도스 플러스 1.2), "CPCDOS 4.1"(CP/M 에뮬레이션의 도스 플러스 1.2), "DRDOS"(DR DOS 3.31-6.0, DR DOS Panther, DR DOS StarTrek, DR-DOS 7.02-7.05), "EZDOS"(EZ-DOS 3.41), "PALMDOS" 및 "NetWare PalmDOS"(PalmDOS 1.0), "NWDOS"(노벨 도스 7), "NWDOS7"(노벨 도스 7 베타), "OPENDOS"(칼데라 OpenDOS 7.01, 칼데라 DR-OpenDOS 7.02), "CDOS"(Concurrent DOS, Concurrent DOS XM), "CPCDOS"(Concurrent PC DOS), "CDOS386"(Concurrent DOS 386), "DRMDOS"(DR 멀티유저 도스), "MDOS"(CCI 멀티유저 도스), "IMSMDOS"(IMS 멀티유저 도스), "REAL32"(REAL/32) 등이 있다. MS-DOS INTERSVR도 "DRDOS" 값을 찾는다. 이후 윈도우 NT 계열에 도입된 동일한 이름의 환경 변수 %OS%도 참조하라.
%PEXEC%
DR-DOS의 일부 버전에서 이 변수는 외부 프로그램 실행에서 돌아온 후 COMMAND.COM이 프롬프트를 표시하기 전 PROMPT 명령의 $X 토큰에 의해 실행되는 명령을 정의한다.
%SWITCHAR%
이 변수는 일부 DR-DOS 명령의 인수 구문 분석에 사용할 SwitChar를 정의한다. 정의되면 시스템의 현재 SwitChar 설정을 재정의한다. 허용되는 문자는 "/"(도스 스타일), "-"(유닉스 스타일) 및 "["(CP/M 스타일)뿐이다. 관련 CONFIG.SYS 지시어 SWITCHAR(시스템의 SwitChar 설정을 지정) 및 DR-DOS COMMAND.COM 일부 버전의 시스템 정보 변수 %/%도 참조하라.
%TASKMGRWINDIR%
이 변수는 DR-DOS TASKMGR 멀티태스커가 사용할 윈도우 SYSTEM.INI가 위치한 디렉토리를 지정하며, 파일 위치를 찾기 위한 기본 절차를 재정의한다.
%VER%
이 변수는 배치 작업 및 VER 명령 표시에서 서로 다른 DR-DOS 버전을 구분하기 위해 운영체제 버전을 포함한다. 이는 PROMPT 명령의 $V 토큰에도 사용되며 시스템 정보 변수 %OS_VERSION%이 반환하는 값에도 영향을 준다. 알려진 값으로는 "1.0"(PalmDOS 1.0), "1.2"(도스 에뮬레이션의 도스 플러스 1.2), "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 멀티유저 도스 5.0), "5.1"(노벨 DR 멀티유저 도스 5.1), "6.0"(DR Concurrent DOS XM 6.0, DR DOS 6.0), "6.2"(DR Concurrent DOS XM 6.2), "7"(노벨 도스 7, 칼데라 OpenDOS 7.01, DR-DOS 7.02-7.05), "7.00"(CCI 멀티유저 도스 7.00), "7.07"(DR-DOS 7.07), "7.1"(IMS 멀티유저 도스 7.1), "7.21"(CCI 멀티유저 도스 7.21), "7.22"(CCI 멀티유저 도스 7.22) 등이 있다.
%YESCHAR%
이 변수는 [Y,N] 쿼리에서 "예"에 대해 메시지에 표시할 문자를 정의하는 데 사용되어 현재 시스템 기본값(영어 DR-DOS 버전에서 일반적으로 "Y")을 재정의한다. 문자열이 포함된 경우 대문자로 변환된 첫 번째 문자만 사용된다. 일부 명령은 쿼리 시 자동적으로 "예"를 가정하여 이러한 프롬프트를 억제하는 명령줄 매개변수 /Y도 지원한다. 하지만 매개변수 /Y:y를 사용하여 "예" 문자를 지정하면(따라서 모든 %YESCHAR% 설정을 재정의하면) 쿼리는 억제되지 않는다. 관련 CONFIG.SYS 지시어 YESCHAR 및 환경 변수 %NOCHAR%도 참조하라.
%$CLS%
이 변수는 CLS 명령이 실행될 때 화면을 지우기 위해 콘솔 드라이버로 보낼 제어 시퀀스를 정의하며, 내부 기본값(DR-DOS에서는 "←[2J", 도스 플러스 1.2에서는 "←E")을 재정의한다. 변수가 정의되어 있지 않고 ANSI.SYS 콘솔 드라이버가 감지되지 않으면, DR-DOS COMMAND.COM은 MS-DOS/PC DOS COMMAND.COM과 마찬가지로 INT 10h/AH=00h BIOS 함수를 통해 화면을 직접 지운다. SET $CLS=\033[2J처럼 ESC 문자를 정의하기 위해 8진법 표기가 지원된다. 역슬래시("\") 자체를 보내려면 \\로 두 번 입력한다.
%$DIR%
도스 플러스에서 지원되며 DIR을 사용한 디렉토리 목록의 기본 레이아웃을 변경하기 위해 "L"(long) 또는 "W"(wide) 값을 허용한다. 명령줄 옵션 /L 또는 /W를 사용하여 재정의할 수 있다. 유사한 환경 변수 %DIRCMD% 및 DR-DOS COMMAND.COM의 DIR 옵션 /C, /R도 참조하라.
%$PAGE%
도스 플러스에서 지원되며 페이지 매김 제어를 위해 "ON" 또는 "OFF" 값을 허용한다. 이를 "ON"으로 설정하면 DIR이나 TYPE과 같이 지원하는 명령에 /P를 추가하는 것과 동일한 효과를 낸다.
%$LENGTH%
도스 플러스에서 콘솔의 화면 길이를 줄 단위로 정의하는 데 사용된다. 이는 다양한 명령이 지원하는 /P 옵션과 함께 사용하거나 자동 페이지 매김과 함께 키가 눌릴 때까지 화면 출력을 일시 중단해야 하는 시점을 휴대 가능한 방식으로 제어하는 데 사용된다. 관련 환경 변수 %$WIDTH% 및 %DIRSIZE%와 유사한 의사 변수 %_ROWS%도 참조하라.
%$WIDTH%
도스 플러스에서 콘솔의 화면 너비를 열 단위로 정의하는 데 사용된다. 이는 DIR /W 또는 TYPE와 같은 명령의 화면 출력 형식을 휴대 가능한 방식으로 제어하는 데 사용된다. 관련 환경 변수 %$LENGTH% 및 %DIRSIZE%와 유사한 의사 변수 %_COLUMNS%도 참조하라.
%$SLICE%
도스 플러스에서 멀티태스킹 프로그램의 포그라운드/백그라운드 시간 슬라이싱을 제어하기 위해 숫자 값을 허용한다. 도스 플러스 명령 SLICE도 참조하라.
%$ON%
이 변수는 텍스트 강조, 반전 또는 색상을 켜는 선택적 제어 시퀀스를 보유할 수 있다. TYPE 와일드카드 명령과 같은 곳에서 파일 이름을 강조하거나 표시를 제어하는 데 사용된다(예: ANSI.SYS가 로드된 경우 SET $ON=\033[1m). 지원되는 특수 8진법 \nnn 표기는 %$CLS%를 참조하라. 도스 플러스와 DR-DOS에서 기본적으로 정의되지 않지만, 멀티유저 도스의 기본값은 SET $ON=\033p이다. 관련 환경 변수 %$OFF%도 참조하라.
%$OFF%
이 변수는 텍스트 강조, 반전 또는 색상을 끄는 선택적 제어 시퀀스를 보유할 수 있다. TYPE 와일드카드 명령과 같은 곳에서 파일 이름 표시 후 일반 출력으로 돌아가는 데 사용된다(예: ANSI.SYS가 로드된 경우 SET $OFF=\033[0m). 지원되는 특수 8진법 \nnn 표기는 %$CLS%를 참조하라. 도스 플러스와 DR-DOS에서 기본적으로 정의되지 않지만, 멀티유저 도스의 기본값은 SET $OFF=\033q이다. 관련 환경 변수 %$ON%도 참조하라.
%$HEADER%
이 변수는 DR-DOS 7.02 이상에서 TYPE와 같은 명령에서 파일 내용을 출력하기 전에 발행되는 선택적 제어 시퀀스를 보유할 수 있다. 하이라이트, 페이지 매김 또는 서식 지정에 사용할 수 있다(예: 프린터로 출력할 때 SET $HEADER=\017). 지원되는 특수 8진법 \nnn 표기는 %$CLS%를 참조하라. 관련 환경 변수 %$FOOTER%도 참조하라.
%$FOOTER%
이 변수는 DR-DOS 7.02 이상에서 TYPE와 같은 명령에서 파일 내용을 출력한 후 발행되는 선택적 제어 시퀀스를 보유할 수 있다. 일반 출력 형식으로 돌아가는 데 사용된다. 지원되는 특수 8진법 \nnn 표기는 %$CLS%를 참조하라. 관련 환경 변수 %$HEADER%도 참조하라.

Datalight ROM-DOS도 다음과 같은 추가 표준 환경 변수를 지원한다.

%DIRSIZE%
DIR 옵션 /P 및 /W에 대해 비표준 화면 크기 rows[,cols]를 정의하는 데 사용된다(도스 플러스의 %$LENGTH% 및 %$WIDTH%와 유사).
%NEWFILE%
이 변수는 CONFIG.SYS 지시어 NEWFILE에 주어진 첫 번째 매개변수로 자동 설정된다.

%TZ%, %COMM%, %SOCKETS%, %HTTP_DIR%, %HOSTNAME% 및 %FTPDIR%도 ROM-DOS에서 사용된다.

OS/2

%BEGINLIBPATH%
시스템 시작 시 특수 CONFIG.SYS 지시어 LIBPATH로 설정되는 %LIBPATH% 변수보다 먼저 DLL을 검색할 디렉토리의 세미콜론 구분 목록을 포함한다. 여기에는 현재 작업 디렉토리를 위한 "."을 포함하여 상대 디렉토리를 지정할 수 있다. 관련 환경 변수 %ENDLIBPATH%도 참조하라.
%ENDLIBPATH%
%BEGINLIBPATH%와 같이 DLL을 검색할 디렉토리 목록이지만, %LIBPATH%에 있는 디렉토리 목록 이후에 검색된다.

윈도우

이 환경 변수들은 중요한 운영체제 리소스의 위치를 가리키므로 일반적으로 사용자 의존적이지 않다.

%APPDATA%
로그인한 사용자의 애플리케이션 데이터 디렉토리 전체 경로를 포함한다. 윈도우 NT 4.0 SP6 UK에서는 작동하지 않는다.
%LOCALAPPDATA%
애플리케이션의 로컬 데이터 파일이다. 데스크톱 테마, 윈도우 오류 보고, 캐싱 및 웹 브라우저 프로필 저장 등의 용도로 사용된다.
%ComSpec%/%COMSPEC%
%ComSpec% 변수는 명령 처리기의 전체 경로를 포함한다. 윈도우 NT 계열 운영체제에서는 cmd.exe이며, 윈도우 9x에서는 COMMAND.COM이다.
%OS%
%OS% 변수는 배치 작업에서 서로 다른 기능 집합을 구분하기 위한 운영체제 계열의 기호 이름을 포함한다. Concurrent DOS, 멀티유저 도스, REAL/32, 도스 플러스, DR-DOS, 노벨 도스, OpenDOS 등 모든 도스 관련 운영체제에서 발견되는 동일한 이름의 환경 변수 %OS%와 유사하다. 윈도우 NT 계열에서 %OS%는 항상 "Windows_NT" 문자열을 보유한다.
%PATH%
명령 해석기가 주어진 명령과 일치하는 실행 파일을 검색할 디렉토리의 세미콜론 구분 목록(중간에 공백 금지)을 포함한다. 경로를 나타내는 환경 변수는 %PATH% 변수 내에 중첩될 수 있지만, 간접 참조는 한 단계까지만 가능하다. 이 하위 경로 환경 변수 자체가 경로를 나타내는 환경 변수를 포함하면 %PATH%는 변수 대체 시 제대로 확장되지 않는다. 유닉스 $PATH 변수와 동일하다.
%PROCESSOR_ARCHITECTURE%, %PROCESSOR_ARCHITEW6432%, %PROCESSOR_IDENTIFIER%, %PROCESSOR_LEVEL%, %PROCESSOR_REVISION%
이 변수들은 CPU의 세부 정보를 포함하며 시스템 설치 중에 설정된다.
%PUBLIC%
(Vista에서 도입) 공용(pseudo) 사용자 프로필 디렉토리 "C:\Users\Public"을 가리킨다.
%ProgramFiles%, %ProgramFiles(x86)%, %ProgramW6432%
%ProgramFiles% 변수는 윈도우 및 기타 설치된 모든 프로그램을 저장하는 프로그램 파일 디렉토리를 가리킨다. 영어 시스템의 기본값은 "C:\Program Files"이다. 64비트 윈도우 에디션(XP, 2003, Vista)에는 기본값이 "C:\Program Files (x86)"인 %ProgramFiles(x86)%와 기본값이 "C:\Program Files"인 %ProgramW6432%도 있다. %ProgramFiles% 자체는 환경 변수를 요청하는 프로세스가 32비트인지 64비트인지에 따라 달라진다(이는 WoW64 리디렉션으로 인해 발생한다).
%CommonProgramFiles%, %CommonProgramFiles(x86)%, %CommonProgramW6432%
프로그램 파일 디렉토리의 공용 파일 하위 디렉토리를 가리킨다. 영어 시스템의 기본값은 "C:\Program Files\Common Files"이다. 64비트 윈도우 에디션에는 기본값이 "C:\Program Files (x86)"인 %ProgramFiles(x86)%와 기본값이 "C:\Program Files"인 %ProgramW6432%가 있다. (마찬가지로 WoW64 리디렉션 적용)
%OneDrive%
윈도우 NT 및 그 파생물에서 발견되는 특수 시스템 전체 환경 변수이다. 값은 (설치 및 설정된 경우) OneDrive 디렉토리가 위치한 경로이다. 대부분의 경우 "C:\Users\{사용자 이름}\OneDrive\"이다.
%SystemDrive%
윈도우 NT 및 그 파생물에서 발견되는 특수 시스템 전체 환경 변수이다. 값은 시스템 디렉토리가 위치한 드라이브이다. 대부분의 경우 "C:"이다.
%SystemRoot%
윈도우 NT 계열 운영체제에서 발견되는 특수 시스템 전체 환경 변수이다. 값은 드라이브와 경로를 포함한 시스템 디렉토리의 위치이다. 드라이브는 %SystemDrive%와 동일하며, 깨끗한 설치에서의 기본 경로는 운영체제 버전에 따라 다르다. 기본값:
%windir%
윈도우 디렉토리를 가리킨다. (윈도우 NT 계열 운영체제에서는 %SystemRoot% 변수와 동일하다.) 윈도우 95–98 및 윈도우 ME는 기본적으로 "C:\Windows"에 설치된다. 다른 버전의 윈도우는 위의 %SystemRoot% 항목을 참조하라.

사용자 관리 변수는 시스템 내 다양한 사용자 프로필이 소유한 리소스 및 설정과 관련된 정보를 저장한다. 일반적으로 이러한 변수는 OS 실행에 필요한 중요한 시스템 리소스나 위치를 참조하지 않는다.

%ALLUSERSPROFILE%(윈도우 Vista 이후 %PROGRAMDATA%)
이 변수는 모든 사용자 프로필 디렉토리의 전체 경로로 확장된다. 이 프로필에는 모든 시스템 계정에서 사용하는 리소스와 설정이 포함된다. 모든 사용자의 시작 메뉴나 바탕 화면 디렉토리로 복사된 바로 가기 링크는 모든 사용자의 시작 메뉴나 바탕 화면에 나타난다.
%USERDOMAIN%
현재 사용자가 속한 작업 그룹 또는 윈도우 도메인의 이름이다. 관련 변수인 %LOGONSERVER%는 현재 사용자의 로그인 자격 증명(이름 및 비밀번호)을 인증한 서버의 호스트명을 보유한다. 홈 PC 및 작업 그룹 PC의 경우, 인증 서버는 일반적으로 PC 자체이다. 윈도우 도메인 내 PC의 경우, 인증 서버는 도메인 컨트롤러이다.
%USERPROFILE%
윈도우 NT 및 그 파생물에서 발견되는 특수 시스템 전체 환경 변수이다. 값은 현재 사용자의 프로필 디렉토리 위치이며, 여기에 해당 사용자의 HKCU 레지스트리 하이브(NTUSER)가 있다. 사용자는 %USERNAME% 변수를 사용하여 활성 사용자의 로그인 식별자를 확인할 수도 있다.

선택적 시스템 변수는 기본적으로 명시되지 않지만 특정 내장 콘솔 명령의 기본 동작을 수정하는 데 사용할 수 있다. 이 변수들은 명령줄 인수로 명시할 필요도 없다.

기본값

다음 표는 CMD에서 검색할 수 있는 영어 버전 윈도우의 특정 환경 변수에 대한 일반적인 기본값을 보여준다.

(일부 변수는 윈도우에서 COMMAND.COM 실행 시에도 정의되지만 중요한 세부 사항에서 차이가 있다. COMMAND.COM 하에서 환경 변수 이름은 항상 대문자이다. 일부 변수는 긴 파일 이름 대신 짧은 8.3을 포함한다. CMD 환경에는 있지만 COMMAND 환경에는 없는 변수도 있고, 반대의 경우도 있다.)

변수 로케일별 윈도우 XP (CMD) 윈도우 Vista 이후 (CMD)
%ALLUSERSPROFILE% 예 C:\Documents and Settings\All Users C:\ProgramData
%APPDATA% 예 C:\Documents and Settings\%USERNAME%\Application Data C:\Users\%USERNAME%\AppData\Roaming
%CommonProgramFiles% 예 C:\Program Files\Common Files C:\Program Files\Common Files
%CommonProgramFiles(x86)% 예 C:\Program Files (x86)\Common Files (64비트 버전에서만) C:\Program Files (x86)\Common Files (64비트 버전에서만)
%CommonProgramW6432% 예 %CommonProgramW6432% (지원 안 함, 값 대체 없음) C:\Program Files\Common Files (64비트 버전에서만)
%COMPUTERNAME% 아니요 {computername} {computername}
%ComSpec% 아니요 C:\Windows\System32\cmd.exe C:\Windows\System32\cmd.exe
%HOMEDRIVE% 아니요 C: C:
%HOMEPATH% 예 \Documents and Settings\%USERNAME% \Users\%USERNAME%
%LOCALAPPDATA% 예 %LOCALAPPDATA% (지원 안 함, 값 대체 없음) C:\Users\%USERNAME%\AppData\Local
%LOGONSERVER% 아니요 \\{domain_logon_server} \\{domain_logon_server}
%PATH% 예 C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;{기타 프로그램 경로} C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;{기타 프로그램 경로}
%PATHEXT% 아니요 .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.WSF;.WSH .com;.exe;.bat;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh;.msc
%ProgramData% 예 %ProgramData% (지원 안 함, 값 대체 없음) %SystemDrive%\ProgramData
%ProgramFiles% 예 %SystemDrive%\Program Files %SystemDrive%\Program Files
%ProgramFiles(x86)% 예 %SystemDrive%\Program Files (x86) (64비트 버전에서만) %SystemDrive%\Program Files (x86) (64비트 버전에서만)
%ProgramW6432% 예 %ProgramW6432% (지원 안 함, 값 대체 없음) %SystemDrive%\Program Files (64비트 버전에서만)
%PROMPT% 아니요 현재 명령 프롬프트 형식 코드, 일반적으로 $P$G 현재 명령 프롬프트 형식 코드, 일반적으로 $P$G
%PSModulePath% %PSModulePath% (지원 안 함, 값 대체 없음) %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\
%PUBLIC% 예 %PUBLIC% (지원 안 함, 값 대체 없음) %SystemDrive%\Users\Public
%SystemDrive% 아니요 C: C:
%SystemRoot% 아니요 윈도우 디렉토리, 일반적으로 C:\Windows, 이전에는 C:\WINNT %SystemDrive%\Windows
%TEMP% 및 %TMP% 예 %SystemDrive%\Documents and Settings\%USERNAME%\Local Settings\Temp %SystemRoot%\TEMP (시스템 환경 변수 %TMP% 및 %TEMP%의 경우),
%USERPROFILE%\AppData\Local\Temp (사용자 환경 변수 %TMP% 및 %TEMP%의 경우)
%USERDOMAIN% 아니요 {userdomain} {userdomain}
%USERNAME% 아니요 {USERNAME} {USERNAME}
%USERPROFILE% 예 %SystemDrive%\Documents and Settings\%USERNAME% %SystemDrive%\Users\%USERNAME%
%windir% 아니요 %SystemDrive%\WINDOWS %SystemDrive%\Windows

이 목록에는 사용자의 내 문서 디렉토리 위치를 참조하는 환경 변수가 없으므로, 프로그램의 홈 디렉토리를 내 문서 디렉토리로 설정하는 표준 방법은 없다.

의사 환경 변수

도스와 윈도우의 명령 처리기는 의사(pseudo) 환경 변수도 지원한다. 이는 환경 변수처럼 가져올 수 있지만 환경에 실제로 저장되는 것이 아니라 요청 시 계산되는 값이다.

도스

변경되거나 삭제될 때까지 환경에 정적으로 저장되는 진정한 환경 변수 외에도, 배치 처리를 위해 여러 의사 환경 변수가 존재한다.

대체 매개변수(마이크로소프트/IBM 용어) 또는 대체 변수(디지털 리서치/노벨/칼데라 용어) 또는 배치 파일 매개변수(JP 소프트웨어 용어) %1..%9 및 %0은 배치 작업의 호출 매개변수를 검색하는 데 사용할 수 있다. 배치 작업에서 이는 환경 변수처럼 가져올 수 있지만 환경에 실제로 저장되지는 않는다.

일부 명령줄 처리기(예: DR-DOS COMMAND.COM, 멀티유저 도스 MDOS.COM/TMP.EXE, JP 소프트웨어 4DOS, 4OS2, Take Command 및 윈도우 cmd.exe)는 시스템 정보 변수(노벨/칼데라 용어) 또는 내부 변수(JP 소프트웨어 용어)라는 의사 환경 변수 유형을 지원한다. 이는 배치 작업에서 실행 중인 시스템에 대한 동적이고 읽기 전용인 정보를 검색하는 데 사용할 수 있다. 반환된 값은 변수가 쿼리되는 시점의 시스템 상태를 나타낸다. 즉, 동일한 명령 내에서도 연속해서 여러 번 읽으면 다른 값이 반환될 수 있으며, 쿼리하는 것만으로는 시스템에 직접적인 영향을 주지 않는다. 환경에 저장되지 않으므로 SET으로 나열되지 않으며 외부 프로그램이 검색할 수도 없다. 동일한 이름의 진정한 환경 변수가 정의되어 있으면 해당 환경 변수가 삭제될 때까지 의사 환경 변수보다 우선한다. 대소문자를 구분하지 않는다. 관례적으로 거의 모든 이러한 변수는 4DOS 등에서 밑줄("_")로 시작하지만(예: %_SECOND%), DR-DOS COMMAND.COM에서는 그렇지 않다(예: %OS_VERSION%).

또한 4DOS, 4OS2, 4NT 및 Take Command는 사용자 정의가 가능한 것을 포함하여 변수 함수를 지원한다. 이는 내부 변수처럼 작동하지만 선택적 매개변수를 취할 수 있고(예: %@EVAL[]%) 함수에 따라 시스템 상태를 변경할 수도 있다.

DR-DOS COMMAND.COM에서 지원하는 시스템 정보 변수:

%AM_PM%
현재 시간의 오전/오후 상태를 반환한다. 반환된 문자열은 DR-DOS의 로케일별 버전에 따라 다르다(예: 영어 버전에서는 "am" 또는 "pm"). 노벨 넷웨어 로그인 스크립트의 식별자 변수와 유사하다.
%DAY%
현재 날짜의 일을 2자리 형식(앞에 0 포함)으로 반환한다(예: "01".."31"). 유사한 의사 변수 %_DAY%도 참조하라. 노벨 넷웨어 로그인 스크립트의 식별자 변수와 유사하다.
%DAY_OF_WEEK%
요일을 3자 형식으로 반환한다. 반환된 문자열은 DR-DOS의 로케일별 버전에 따라 다르다(예: 영어 버전에서는 "Sun", "Mon" 등). 노벨 넷웨어 로그인 스크립트의 식별자 변수와 유사하다.
%ERRORLEVEL%
DR-DOS 7.02 이상의 COMMAND.COM에서 외부 프로그램이나 RETURN 명령이 반환한 마지막 오류 레벨을 반환한다(예: "0".."255"). 윈도우의 동일한 이름의 의사 변수 %ERRORLEVEL% 및 IF ERRORLEVEL 조건 명령도 참조하라.
%ERRORLVL%
DR-DOS 7.02 이상에서 마지막 오류 레벨을 3자리 형식(앞에 0 포함)으로 반환한다(예: "000".."255"). 멀티유저 도스에서는 종료 프로그램의 반환 코드로 셸에 의해 자동 업데이트되는 진정한 환경 변수이다. DR-DOS의 관련 의사 변수 %ERRORLEVEL% 및 IF ERRORLEVEL 명령도 참조하라.
%GREETING_TIME%
3단계 일일 인사 시간을 반환한다. 반환된 문자열은 DR-DOS의 로케일별 버전에 따라 다르다(예: 영어 버전에서는 "morning", "afternoon" 또는 "evening"). 노벨 넷웨어 로그인 스크립트의 식별자 변수와 유사하다.
%HOUR%
현재 시간의 시를 12시간 형식(앞에 0 제외)으로 반환한다(예: "1".."12"). 노벨 넷웨어 로그인 스크립트의 식별자 변수와 유사하다.
%HOUR24%
현재 시간의 시를 24시간 형식(2자리, 앞에 0 포함)으로 반환한다(예: "00".."23"). 노벨 넷웨어 로그인 스크립트의 식별자 변수와 유사하다. 유사한 의사 변수 %_HOUR%도 참조하라.
%MINUTE%
현재 시간의 분을 2자리 형식(앞에 0 포함)으로 반환한다(예: "00".."59"). 노벨 넷웨어 로그인 스크립트의 식별자 변수와 유사하다. 유사한 의사 변수 %_MINUTE%도 참조하라.
%MONTH%
현재 날짜의 월을 2자리 형식(앞에 0 포함)으로 반환한다(예: "01".."12"). 노벨 넷웨어 로그인 스크립트의 식별자 변수와 유사하다. 유사한 의사 변수 %_MONTH%도 참조하라.
%MONTH_NAME%
현재 날짜의 월 이름을 반환한다. 반환된 문자열은 DR-DOS의 로케일별 버전에 따라 다르다(예: 영어 버전에서는 "January" 등). 노벨 넷웨어 로그인 스크립트의 식별자 변수와 유사하다.
%NDAY_OF_WEEK%
현재 주의 요일 번호를 반환한다(예: "1".."7", "1"은 일요일). 노벨 넷웨어 로그인 스크립트의 식별자 변수와 유사하다.
%OS_VERSION%
환경 변수 %VER%의 현재 설정에 따라 운영체제 버전을 반환한다. %VER%가 정의되지 않으면 "off"를 반환한다. 노벨 넷웨어 로그인 스크립트의 식별자 변수와 유사하다.
%SECOND%
현재 시간의 초를 2자리 형식(앞에 0 포함)으로 반환한다(예: "00".."59"). 노벨 넷웨어 로그인 스크립트의 식별자 변수와 유사하다. 유사한 의사 변수 %_SECOND%도 참조하라.
%SHORT_YEAR%
현재 날짜의 연도를 2자리 형식(앞에 0 포함)으로 반환한다(예: "93".."99", "00".."92"). 노벨 넷웨어 로그인 스크립트의 식별자 변수와 유사하다.
%YEAR% 및 %_YEAR%
노벨 도스 7부터 지원되며, %YEAR% 의사 변수는 연도를 4자리 형식으로 반환한다(예: "1980".."2099"). 노벨 넷웨어 로그인 스크립트의 식별자 변수와 유사하다. DR-DOS 7.02 이상은 4DOS와의 호환성을 위해 동일한 값을 반환하는 %_YEAR%를 추가했다.
%/%
DR-DOS 7.02 이상의 COMMAND.COM에서 시스템의 현재 SwitChar 설정("/" 또는 "-")을 반환한다. CONFIG.SYS 지시어 SWITCHAR 및 환경 변수 %SWITCHAR%도 참조하라.
%_CODEPAGE%
시스템의 현재 코드 페이지("1".."65533")를 반환한다. 원래 4DOS에 의해 도입되었지만 DR-DOS 7.02 이후 COMMAND.COM에서도 사용할 수 있게 되었다. CHCP 명령도 참조하라.
%_COLUMNS%
화면 모드에 따라 현재 화면 열 수를 반환한다. 원래 4DOS에 의해 도입되었지만 DR-DOS 7.02 이후 COMMAND.COM에서도 사용할 수 있게 되었다. 도스 플러스의 환경 변수 %$WIDTH%도 참조하라.
%_COUNTRY%
시스템의 현재 국가 코드를 반환한다. 원래 4DOS에 의해 도입되었지만 DR-DOS 7.02 이후 COMMAND.COM에서도 사용할 수 있게 되었다. CONFIG.SYS 지시어 COUNTRY도 참조하라.
%_DAY%
현재 날짜의 일을 (앞에 0 제외) 반환한다. 원래 4DOS에 의해 도입되었지만 DR-DOS 7.02 이후 COMMAND.COM에서도 사용할 수 있게 되었다. %DAY%도 참조하라.
%_HOUR%
현재 시간의 시를 24시간 형식(앞에 0 제외)으로 반환한다. 원래 4DOS에 의해 도입되었지만 DR-DOS 7.02 이후 COMMAND.COM에서도 사용할 수 있게 되었다. %HOUR24%도 참조하라.
%_MINUTE%
현재 시간의 분을 (앞에 0 제외) 반환한다. 원래 4DOS에 의해 도입되었지만 DR-DOS 7.02 이후 COMMAND.COM에서도 사용할 수 있게 되었다. %MINUTE%도 참조하라.
%_MONTH%
현재 날짜의 월을 (앞에 0 제외) 반환한다. 원래 4DOS에 의해 도입되었지만 DR-DOS 7.02 이후 COMMAND.COM에서도 사용할 수 있게 되었다. %MONTH%도 참조하라.
%_ROWS%
화면 모드에 따라 현재 화면 행 수를 반환한다. 원래 4DOS에 의해 도입되었지만 DR-DOS 7.02 이후 COMMAND.COM에서도 사용할 수 있게 되었다. 도스 플러스의 환경 변수 %$LENGTH%도 참조하라.
%_SECOND%
현재 시간의 초를 (앞에 0 제외) 반환한다. 원래 4DOS에 의해 도입되었지만 DR-DOS 7.02 이후 COMMAND.COM에서도 사용할 수 있게 되었다. %SECOND%도 참조하라.

네트워킹이 로드된 DR-DOS COMMAND.COM에서 지원하는 시스템 정보 변수:

%LOGIN_NAME%
사용자 이름을 반환한다. NETX에서 항상 작동했으며, 현재 드라이브가 PNW 매핑 드라이브인 경우 개인용 넷웨어의 ODI/VLM에서도 작동한다. 관련 환경 변수 %LOGINNAME%도 참조하라.
%P_STATION%
물리적 스테이션 번호를 "????????????" 형식으로 반환한다. 네트워크 어댑터의 MAC 주소에 따라 다르지만 재정의될 수 있다. 노벨 넷웨어 로그인 스크립트의 식별자 변수와 유사하다.
%STATION%
논리적 스테이션 번호를 반환한다. 번호는 파일 서버에 의해 할당되며 IPX 연결이 유지되는 한 정적으로 유지된다. 노벨 넷웨어 로그인 스크립트의 식별자 변수와 유사하다.
%FULL_NAME%
로그인한 사용자의 전체 이름을 반환한다(사용 가능한 경우). 노벨 넷웨어 로그인 스크립트의 식별자 변수와 유사하다. 관련 의사 변수 %LOGIN_NAME%도 참조하라.

윈도우

동적 환경 변수(도스에서는 내부 변수 또는 시스템 정보 변수라고도 함)는 명령줄 확장이 활성화되었을 때 CMD.EXE에 의해 지원되는 의사 환경 변수이며, 쿼리될 때마다 다양한 값으로 확장된다. 즉, 동일한 명령 내에서도 여러 번 쿼리되면 값이 변경될 수 있다. 배치 작업이나 프롬프트에서 사용할 수 있지만 환경에 저장되지는 않는다. 결과적으로 SET으로 나열되지 않으며 외부 프로그램이 읽을 수도 없다. 대소문자를 구분하지 않는다.

간접적으로 윈도우 COMMAND.COM에서도 지원되는데, 이는 명령을 실행하기 위해 내부적으로 CMD.EXE를 호출하도록 수정되었다.

%CD%
CD 명령을 인수 없이 호출했을 때의 출력과 동일한 현재 디렉토리로 확장된다. CMD.EXE 하에서는 현재 디렉토리에 따라 긴 파일 이름이 반환될 수 있지만, COMMAND.COM 하에서는 현재 디렉토리가 항상 8.3 형식이므로 COMMAND가 내부적으로 CMD를 호출할 때도 짧은 파일 이름이 반환된다.
%CMDCMDLINE%
CMD.EXE의 원래 시작 매개변수(예: "C:\Windows\system32\cmd.exe")로 확장된다. 윈도우 COMMAND.COM 하에서는 COMMAND.COM이 내부적으로 CMD.EXE를 호출하기 때문에 "C:\Windows\system32\cmd.exe /c ..."와 같은 형태가 반환될 수 있다.
%CMDEXTVERSION%
명령줄 확장이 활성화된 경우(예: 윈도우 NT에서는 "1", 윈도우 2000 및 윈도우 XP에서는 "2") 해당 확장의 버전으로 확장된다.
%DATE%
현재 날짜로 확장된다. 날짜는 현재 사용자의 날짜 형식 기본 설정에 따라 표시된다.
%ERRORLEVEL%
마지막으로 설정된 오류 레벨(0~255)로 확장된다. 외부 명령과 일부 내부 명령은 실행 시 오류 레벨을 설정한다. DR-DOS의 동일한 이름의 의사 변수 %ERRORLEVEL% 및 IF ERRORLEVEL 명령도 참조하라.
%HIGHESTNUMANODENUMBER%
가장 높은 NUMA 노드 번호를 반환한다.
%RANDOM%
"0"에서 "32767" 사이의 난수를 반환한다.
%TIME%
현재 시간으로 확장된다. 시간은 현재 사용자의 시간 형식 기본 설정에 따라 표시된다. %TIME% 및 %DATE% 변수를 모두 사용하는 경우, 자정 전환 문제를 방지하기 위해 이 특정 순서로 빠르게 읽는 것이 중요하다.

기타 셸

유닉스 계열 셸에도 동적으로 생성되는 유사한 변수가 있으며, 배시의 $RANDOM이 잘 알려진 예이다. 하지만 이 셸들은 로컬 변수 개념을 가지고 있으므로, 특별한 로컬 변수로 기술된다.

같이 보기

각주

  1. ↑ Robbins, Arnold; Beebe, Nelson H. F. (May 2005). Apandi, Tatiana; Randal, Allison; Witwer, Adam (편집). 《Classic Shell Scripting》 1판. O'Reilly. ISBN 978-0-596-00595-5.
  2. ↑ “unset - unset values and attributes of variables and functions – ” Issue 7판. 《Commands & Utilities Reference, The Single UNIX Specification - The Open Group Base Specifications, IEEE Std 1003.1-2008》. The IEEE and The Open Group. 2016. 2017년 12월 18일에 원본 문서에서 보존된 문서. 2017년 12월 18일에 확인함.
  3. ↑ fgrose (2015년 7월 31일). “The unset builtin command”. 《Bash Hackers Wiki》. 2017년 12월 18일에 원본 문서에서 보존된 문서. 2017년 12월 18일에 확인함.
  4. ↑ “putenv”. 《php.net》. The PHP Documentation Group. 2025년 11월 9일에 원본 문서에서 보존된 문서. 2026년 6월 30일에 확인함.
  5. ↑ “putenv() PHP Function”. 《The Raided Foundation Docs》. the Raided Foundation. 2025년 10월 31일에 원본 문서에서 보존된 문서. 2025년 10월 31일에 확인함.
  6. ↑ Jacobs, Mike; Koren, Alexander; Satran, Michael (2017년 11월 14일). “Store and retrieve settings and other app data”. Microsoft. 2017년 12월 18일에 원본 문서에서 보존된 문서. 2017년 12월 18일에 확인함.
  7. ↑ Raymond, Eric (2002년 8월 2일). “The BROWSER project”. 2019년 9월 21일에 원본 문서에서 보존된 문서. 2020년 10월 21일에 확인함.
  8. ↑ “LWN - Development”. 《LWN.net》. 2001년 2월 1일. 2019년 2월 8일에 원본 문서에서 보존된 문서. 2020년 10월 21일에 확인함. Standardizing a BROWSER environment variable. Eric Raymond is promoting the use of a new environment variable, BROWSER, to complement the existing PAGER, MAILER, and EDITOR variables. This effort is being tested as an experiment in hacking social systems.
  9. ↑ Špaček, Michal (2020년 1월 19일). “Env::Browser-0.06”. 《metacpan.org》. 2020년 10월 21일에 원본 문서에서 보존된 문서. 2020년 10월 21일에 확인함. Env::Browser - Process environment variable $BROWSER and run web browser
  10. ↑ “webbrowser — Convenient Web-browser controller”. 《docs.python.org》. 2020년 10월 13일에 원본 문서에서 보존된 문서. 2020년 10월 21일에 확인함.
  11. ↑ “DefaultWebBrowser - Debian Wiki”. 《wiki.debian.org》. 2020년 6월 10일. 2020년 10월 21일에 원본 문서에서 보존된 문서. 2020년 10월 21일에 확인함. The environment variable BROWSER can be set to[…] always choose your desired browser.
  12. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Brothers, Hardin; Rawson, Tom; Conn, Rex C.; Paul, Matthias R.; Dye, Charles E.; Georgiev, Luchezar I. (2002년 2월 27일). 《4DOS 8.00 online help》.
  13. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Paul, Matthias R. (1997년 7월 30일). 《NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds》 3판 (독일어). 《MPDOSTIP》. Release 157. 2016년 11월 4일에 원본 문서에서 보존된 문서. 2014년 8월 6일에 확인함. (NB. NWDOSTIP.TXT is a comprehensive work on Novell DOS 7 and OpenDOS 7.01, including the description of many undocumented features and internals. The provided link points to a HTML-converted version of the file, which is part of the MPDOSTIP.ZIP collection.)
  14. 1 2 3 4 5 Paul, Matthias R. (1997년 5월 1일). “Hinweise zu JPSofts 4DOS 5.5b/c, 5.51, 5.52a und NDOS” (독일어). 《MPDOSTIP》. 2016년 11월 4일에 원본 문서에서 보존된 문서. 2015년 5월 8일에 확인함. (NB. The provided link points to a HTML-converted version of the 4DOS5TIP.TXT file, which is part of the MPDOSTIP.ZIP collection.)
  15. 1 2 Paul, Matthias R. (1997년 10월 2일). “Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM README.TXT”. 2003년 10월 4일에 원본 문서에서 보존된 문서. 2009년 3월 29일에 확인함.
  16. 1 2 Applications not coping properly with environment variables longer than 128 characters include CadStar PCB, Checkit, Computer Select CD-ROM, RenderMan, VINES Network, Windows 3.0, and Word for Windows 6.0.
  17. ↑ Paul, Matthias R. (1997년 5월 27일). “SETENV v1.11”. 2009년 2월 15일에 원본 문서에서 보존된 문서. 2019년 8월 9일에 확인함. […] SETENV […] to hide and later restore the […] pre-environment […] By using SETENV.COM you can save some KiloBytes of rare DOS memory […] depending on the number of drivers loaded by INSTALL=/INSTALLHIGH=/HIINSTALL= and the current size of the pre-environment. […] this original […] feature cannot be found in any known memory manager/optimizer. […]
  18. ↑ Paul, Matthias R. (2002년 4월 6일). “Re: [fd-dev] ANNOUNCE: CuteMouse 2.0 alpha 1”. 《freedos-dev》. 2020년 2월 7일에 원본 문서에서 보존된 문서. 2020년 2월 7일에 확인함. […] In CTMOUSE.ASM prepareTSR routine I found a comment in regard to the zero-environment. […] DESQview or DRDOS zero-env? […] release environment block […] skip if any problem […] zero-pad for MEM style utilities […]
  19. ↑ “PTS-DOS 2000 Pro User Manual” (PDF). 2018년 5월 12일에 원본 문서 (PDF)에서 보존된 문서. 2018년 5월 12일에 확인함.
  20. ↑ Paul, Matthias R. (2002년 10월 7일). “Re: Run a COM file”. 뉴스그룹: alt.msdos.programmer. 2017년 9월 3일에 확인함.
  21. 1 2 3 4 5 6 Datalight, Inc.; GPvNO (April 2005). “Datalight ROM-DOS User's Guide” (PDF). Datalight, Inc. 3010-0200-0716. 2019년 3월 20일에 원본 문서 (PDF)에서 보존된 문서. 2018년 9월 16일에 확인함.
  22. ↑ 4DOS and MS-DOS 7.0 set the length to 127 and insert ASCII-13 at this position, but Borland libraries set the length to the invalid value of 128 and do not insert an ASCII-13. For shorter command lines, 4DOS/NDOS and DR-DOS also insert an ASCII-0 after the ASCII-13, but not when invoked via INSTALL directive; MS-DOS does not.
  23. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Paul, Matthias R. (2002년 3월 26일). “Updated CLS posted”. freedos-dev mailing list. 2018년 10월 4일에 원본 문서에서 보존된 문서. 2014년 8월 6일에 확인함.
  24. 1 2 3 4 Paul, Matthias R. (2017년 8월 14일). “The continuing saga of Windows 3.1 in enhanced mode on OmniBook 300”. 《MoHPC - the Museum of HP Calculators》. 2018년 5월 1일에 원본 문서에서 보존된 문서. 2018년 5월 1일에 확인함. […] set DRSYS=ON (optional to tell SYS you are aware of the fact that you're running it in a foreign environment and want to proceed anyway without having to individually ACK some warnings and extra info screens displayed in this scenario otherwise) […]
  25. 1 2 3 4 5 6 7 8 《CCI Multiuser DOS 7.22 GOLD Online Documentation》. Concurrent Controls, Inc. (CCI). 1997년 2월 10일. HELP.HLP.
  26. ↑ 《CCI Multiuser DOS 7.22 GOLD Installation Guide》. Concurrent Controls, Inc. (CCI). 1997년 2월 10일. PRINTDOC.HLP.
  27. 1 2 3 4 5 6 7 《Caldera DR-DOS 7.02 User Guide》. Caldera, Inc. 1998. 2016년 11월 4일에 원본 문서에서 보존된 문서. 2013년 8월 10일에 확인함.
  28. 1 2 3 Paul, Matthias R. (2002년 2월 20일). “How to detect FreeCOM/FreeDOS in-batch?”. freedos-dev mailing list. 2018년 11월 6일에 원본 문서에서 보존된 문서. 2014년 8월 6일에 확인함.
  29. 1 2 3 4 5 6 7 Kotulla, Martin (November 1987). “Von CP/M zu MS-DOS, Teil 11” (PDF) (독일어). 《Professional Computing (PC) - Schneider International》 3 (11): 100–103. 2019년 4월 24일에 원본 문서 (PDF)에서 보존된 문서. 2018년 5월 20일에 확인함.
  30. ↑ “Recognized environment variables - Windows Deployment”. 2024년 1월 9일.
  31. ↑ Brink, Shawn (2018년 11월 17일). “Environment Variables in Windows 10 - Complete List of Environment Variables in Windows 10”. 《Windows Ten Forums》. 2019년 3월 27일에 원본 문서에서 보존된 문서. 2019년 4월 24일에 확인함.
  32. ↑ “WOW64 Implementation Details”.
  33. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 Schulz, Hajo (2014년 10월 2일). “Ordner für spezielle Fälle — Die "benannten Ordner" in Windows aus User- und Entwicklersicht” [Special purpose folders — Windows' "named folders" from a user's and developer's perspective] (독일어). 《c't - magazin für computertechnik》 (Heise Verlag) 2014 (22): 180–184. 2016년 7월 9일에 원본 문서에서 보존된 문서. 2019년 4월 8일에 확인함.
  34. 1 2 3 Paul, Matthias R. (1997년 5월 1일). 《BATTIPs — Tips & Tricks zur Programmierung von Batchjobs》 (독일어). 《MPDOSTIP》. 7: ERRORLEVEL abfragen. 2017년 8월 23일에 원본 문서에서 보존된 문서. 2017년 8월 23일에 확인함. 보관됨 2021-04-23 - 웨이백 머신 (NB. BATTIPS.TXT is part of MPDOSTIP.ZIP. The provided link points to a HTML-converted older version of the BATTIPS.TXT file.)
  35. 1 2 3 Auer, Eric; Paul, Matthias R.; Hall, Jim (2015년 12월 24일). “MS-DOS errorlevels”. 2015년 12월 24일에 원본 문서에서 보존된 문서.
  36. ↑ Paul, Matthias R. (1998년 1월 9일). 《DELTREE.BAT R1.01 Extended file and directory delete》. Caldera, Inc. 2019년 4월 8일에 원본 문서에서 보존된 문서. 2019년 4월 8일에 확인함.
  37. ↑ 《DR-DOS 7.03 WHATSNEW.TXT — Changes from DR-DOS 7.02 to DR-DOS 7.03》. Caldera, Inc. 1998년 12월 24일. 2019년 4월 8일에 원본 문서에서 보존된 문서. 2019년 4월 8일에 확인함.
  38. ↑ Allen, William; Allen, Linda. “Windows 95/98/ME ERRORLEVELs”. 2011년 7월 7일에 원본 문서에서 보존된 문서.
  39. ↑ “Shell Variables”. 《Bash Reference Manual》. 2018년 3월 15일에 원본 문서에서 보존된 문서. 2021년 6월 2일에 확인함.

외부 링크