환경 변수
환경 변수(環境 變數, 영어: environment variable)는 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이다.
환경 변수 보기/설정[편집]
변수들은 명령 줄 위에서, .BAT 확장자를 가지는 일괄 처리 파일, 또는 스크립트 안에서 쓰일 수 있다. 변수 이름 주변이나 앞에 있는 특별한 기호를 놓아서 참조하는 것이 보통이다.
예를 들어, 도스 또는 윈도 시스템에서 "프로그램을 찾는 기본 경로"를 보여 주려면, 이 명령어를 사용하면 된다:
echo %PATH%
다른 스크립트와 셸 환경에서는 가끔 위와 같은 목적에서라도 다른 기호를 사용한다. 많은 유닉스 셸에서는 흔히 달러 사인이 쓰인다:
echo $PATH
도스[편집]
도스와 윈도에서 SET 명령어를 변수 없이 사용하면 모든 환경 변수와 그에 따른 모든 값을 보여 준다.
도스-윈도의 특정한 값에 변수를 설정하려면 다음과 같이 사용하면 된다:
SET 변수=값
"SET 변수="라고만 입력하면, 해당 변수 자체가 지워진다.
유닉스[편집]
env, set, 그리고 printenv 명령어들은 변수 없이 사용하면 모든 환경 변수와 그에 따른 모든 값을 보여 준다. env와 set은 또한 환경 변수를 설정하는 데 쓰일 수도 있으며 자주 셸에 직접 통합되기도 한다. printenv는 변수 이름을 명령어에 단일 변수로 주면 하나의 단일 변수를 인쇄하는 데 쓰일 수 있다.
유닉스에서 다음의 명령어들을 사용할 수 있지만 어떠한 셸에서는 자주 의존적으로 쓰인다.
export 변수=값 # Bourne, bash, 그리고 다른 셸에서 쓰임 setenv 변수 값 # csh과 관련된 셸에서 쓰임
예측 불허의 환경 변수[편집]
유닉스에서, 변수들은 export 키워드 없이 할당되기도 한다. 이러한 방법으로 변수를 정의하면 set 명령어를 통해 보이기는 하지만 자식 프로세스에 종속되지는 않는다. 도스와 윈도 환경에서는 이것을 사용할 수 없다.
변수=값
예시[편집]
PATH
: 디렉터리 경로의 목록. 사용자가 전체 경로를 지정하지 않고 명령을 입력하면 이 목록을 확인하여 해당 명령어가 경로에 속하는지를 살펴본다.HOME
(유닉스 계열) 및USERPROFILE
(마이크로소프트 윈도우): 사용자의 홈 디렉터리가 파일 시스템의 어디에 위치해있는지를 지시한다.HOME/{.AppName}
(유닉스 계열) 및APPDATA\{DeveloperName\AppName}
(마이크로소프트 윈도우): 애플리케이션 설정 저장을 위해 사용한다. 윈도우의 경우 수많은 애플리케이션들이 애플리케이션 설정에USERPROFILE
을 잘못 사용한다:USERPROFILE
은Documents/Pictures/Downloads/Music
와 같은 경로를 사용자가 선택할 수 있게 허용하는 대화 상자에만 사용해야 한다. 프로그래밍 목적의 경우APPDATA
(여러 장치 간 공유되는 애플리케이션 설정 조회용),LOCALAPPDATA
(로컬 애플리케이션 설정용) 또는PROGRAMDATA
(여러 OS 사용자 간 공유되는 애플리케이션 설정용)을 사용해야 한다.[1]TERM
(유닉스 계열): 사용되는 컴퓨터 터미널이나 터미널 에뮬레이터의 유형을 지정한다. (예:vt100
또는dumb
).PS1
(유닉스 계열): 본 셸 및 변종에서 프롬프트가 어떻게 표시될지를 지정한다.MAIL
(유닉스 계열): 사용자의 메일을 발견할 위치를 지정하는데 사용된다.TEMP
: 프로세스가 임시 파일을 저장할 수 있는 위치이다.
유닉스[편집]
$HOME
- 사용자의 홈 디렉터리의 위치를 포함한다.
getpwuid
,getuid
와 같은 C 함수를 통해 현재 사용자의 홈 디렉터리를 찾아낼 수 있으나 다양한 셸 스크립트(및 다른 컨텍스트)에서 편의를 위해$HOME
이 자주 사용된다.
$PWD
- 현재 디렉터리의 변수 지점. pwd 명령어를 변수 없이 호출할 때의 출력과 동일하다.
$DISPLAY
- X1 프로그램이 기본적으로 사용할 디스플레이 식별자를 포함한다.
$LD_LIBRARY_PATH
- 동적 링커가 있는 수많은 유닉스 시스템에서 다른 모든 디렉터리를 찾기 전에
exec
이후 프로세스 이미지를 빌드할 때 동적 링커가 공유 오브젝트를 검색할 대상인 콜론 구분 디렉터리 목록을 포함한다.
$LANG, $LC_ALL, $LC_...
$LANG
은 기본 로케일을 설정하기 위해 사용된다. 이를테면 로케일 값이pt_BR
이라면 언어는 (브라질) 포르투갈어로 설정된다. 각기 다른 지역화 관점은 개개의$LC_
- 변수($LC_CTYPE
,$LC_COLLATE
,$LC_DATE
등)들에 의해 제어된다.$LC_ALL
을 사용하면 모든 관점에 동일한 로케일을 강제하는데 사용할 수 있다.
$TZ
- 시간대를 참조한다. 시간대 자체를 지정하거나 파일을 참조(
/usr/share/zoneinfo
에서)시킴으로써 여러 형식으로 사용이 가능하다.
마이크로소프트 윈도우 XP, 비스타의 기본 환경 변수와 값[편집]
변수 | 자료값 |
---|---|
%ALLUSERSPROFILE% | (윈도 XP) C:\Documents and Settings\All Users
(윈도 비스타) C:\ProgramData |
%APPDATA% | (윈도 XP) C:\Documents and Settings\{사용자 이름}\Application Data
(윈도 비스타) C:\Users\{사용자 이름}\AppData\Roaming |
%COMPUTERNAME% | {컴퓨터 이름} |
%COMSPEC% | C:\Windows\System32\cmd.exe |
%HOMEDRIVE% | C: |
%HOMEPATH% | (윈도 XP) \Documents and Settings\{사용자 이름}
(윈도 비스타) \Users\{사용자 이름} |
%PATH% | C:\Windows\System32\;C:\Windows\;C:\Windows\System32\Wbem |
%PATHEXT% | (윈도 XP) .COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS ; .WSF: .WSH
(윈도 비스타) .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC |
%PROGRAMFILES% | C:\Program Files |
%PROMPT% | 현재 명령 프롬프트 포맷에 대한 코드. 보통 이 코드는 $P$G로 되어 있다. |
%SYSTEMDRIVE% | 윈도 XP 루트 디렉터리를 포함하고 있는 드라이브. 보통 C: |
%SYSTEMROOT% | 윈도 디렉터리. 보통 C:\Windows로 되어 있으며, 공식적으로는 C:\WINNT이다. |
%TEMP% 및 %TMP% | (윈도 XP) C:\Documents and Settings\{사용자 이름}\Local Settings\Temp
(윈도 비스타) C:\Users\{사용자 이름}\AppData\Local\Temp |
%USERNAME% | {사용자 이름} |
%USERPROFILE% | (윈도 NT 4, 2000) C:\windows\Profile
(윈도 XP) C:\Documents and Settings\{사용자 이름} |
%WINDIR% | C:\Windows |
각주[편집]
- ↑ Jacobs, Mike; Koren, Alexander; Satran, Michael (2017년 11월 14일). “Store and retrieve settings and other app data”. Microsoft. 2017년 12월 18일에 원본 문서에서 보존된 문서. 2017년 12월 18일에 확인함.