알리는 말
11월 18일 수정
본문의 내용이 저작권을 침해할 우려가 있다는 모꼬모지 님의 의견이 있었습니다. 처음에는 본문에 해당하는 한국어 번역이 없다고 여겼으나, 모꼬모지 님이 이미 번역한 부분이 있었고, 저는 그것을 모르는 상태에서 본문을 작성하였습니다. 그에 따라 번역문이 낱말은 물론 토씨까지 일치하는 곳을 상당 부분 발견하였고, 그러한 부분을 대부분 삭제하였으며, 꼭 필요한 일부는 남겼습니다(예컨대 PROCESSOR_ 로 시작하는 환경변수).
그로 말미암아 설명이 삭제된 부분이 생겼는데, 일부는 영어 위키백과의 Environment variable에서 내용을 복사하여 붙였습니다. 제 블로그의 라이선스가 GFDL이고 위키백과도 GFDL이기 때문에 가능했습니다. 영문 그대로 둔 이유는 번역할 경우 그 결과물이 이미 번역된 다른 글과 같을 수 있다는 염려 때문입니다. 한국어 위키백과에 내용이 추가되기 전까지는 본문의 영어 부분을 한국어로 번역하지 않을 생각입니다.
그와 함께 변수 구분을 위해 하위 개요를 두어 표를 두 개로 분리하였습니다.
11월 19일 수정
모꼬모지 님께 먼저 죄송하다는 말을 드려야겠네요.
죄송합니다.
위키백과의 사랑방에서 과거에 있었던 여러 토론을 살펴본 결과 링크만 걸려 있으면 그다지 문제가 없다는 의견을 여럿 보게 되었습니다. 결국 제가 너무 까탈스럽게 굴었다는 말이네요.
너무 원칙만 고수하다 보니 본의 아니게 모꼬모지 님과 논쟁을 벌이게 되어습니다. 앞으로는 좀 더 시야를 넓혀 이번과 같은 일이 다시 일어나지 않도록 하겠습니다.
말뜻
환경 변수(環境 變數)는 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이다.[footnote]한국어 위키백과 : 환경 변수 [/footnote] 이때 변수들은 명령줄 위에서, .BAT 확장자를 가지는 일괄 처리 파일, 또는 스크립트 안에서 쓰일 수 있다. 변수 이름 주변이나 앞에 특별한 기호(예 : %)를 놓아서 참조하는 것이 보통이다.
윈도 테크넷의 정의에 따르면,[footnote]명령 셸 개요 :: Cmd.exe와 함께 환경 변수 사용 문서를 참조하였다.[/footnote] Cmd.exe 명령 셸 환경은 명령 셸 및 운영 체제의 동작을 결정하는 변수에서 정의한다. 시스템과 로컬, 이 두 가지 환경 변수를 사용하여 명령 셸 환경 또는 전체 운영 체제 환경의 동작을 정의할 수 있다. 시스템 환경 변수는 전체 운영 체제 환경의 동작을 정의하며, 로컬 환경 변수는 현재 Cmd.exe 인스턴스의 환경 동작을 정의한다.
시스템 환경 변수는 운영 체제에 미리 설정되어 Windows XP의 모든 프로세스에서 사용할 수 있다. 관리 권한이 있는 사용자만 시스템 변수를 변경할 수 있으며, 이 변수는 로그온 스크립트에서 가장 많이 사용한다. 로컬 환경 변수는 그 변수를 사용하도록 만든 사용자가 컴퓨터에 로그온한 경우에만 사용할 수 있다. 로컬 변수는 HKEY_CURRENT_USER 하이브에서 설정하고 현재 사용자인 경우에만 유효하지만 전체 운영 체제 환경의 동작을 정의합니다.
윈도 환경에서 환경 변수의 유형은 다음과 같습니다.
- 기본 제공 시스템 변수
- HKEY_LOCAL_MACHINE 하이브에 있는 시스템 변수
- HKEY_CURRENT_USER 하이브에 있는 로컬 변수
- 모든 환경 변수 및 Autoexec.bat 파일에서 설정된 경로
- 모든 환경 변수 및 로그온 스크립트에서 설정된 경로
- 스크립트 또는 배치 파일과 상호 작용하는 변수
윈도의 환경 변수
윈도의 기본 환경 변수는 다음과 같다.[footnote]명령 셸 개요 :: Cmd.exe와 함께 환경 변수 사용 문서, Environment Variables 문서, Windows Platform Comparison Environment Variable Reference 문서, Windows Vista- Environment variables 문서 등을 참조하였다.[/footnote] 변수명에는 퍼센트 기호(%)를 붙이지 않지만, 배치파일에서 사용한다고 가정하여 퍼센트 기호(%)를 붙인 상태로 표시하였다.
시스템 변수
여기에서 말하는 시스템 변수는 기본 제공 시스템 변수와 레지스트리에 저장된 시스템 변수를 편의상 통틀어 이르는 명칭이다.
윈도의 기본 환경 변수는 다음과 같다.[footnote]변수명에는 퍼센트 기호(%)를 붙이지 않지만, 배치파일에서 사용한다고 가정하여 퍼센트 기호(%)를 붙인 상태로 표시하였다.[/footnote]
변수 | 설명 |
---|---|
%CMDEXTVERSION% |
|
%COMPUTERNAME% | 컴퓨터 이름을 반환합니다. 정확하게는 현재 컴퓨터의 NetBOIS 이름을 반환한다.
|
%ComSpec% | This variable contains the full path to the command processor; on Windows NT based operating systems this is cmd.exe, while on Windows 9x and ME it is the DOS command processor, COMMAND.COM.
|
%DATE% | This variable expands to the current date. The date is displayed according to the current user's date format preferences. The following is a way of reformatting the date and time for use in file copies. The example assumes UK format of day month year and the time is set for a 24 hour clock.
|
%ERRORLEVEL% | This variable points to the current error level. If there was an error
in the previous command, this is what you need to check against to find
out about that. |
%HOMEDRIVE% |
|
%HOMEPATH% |
|
%HOMESHARE% | 사용자 공유 홈 디렉터리의 네트워크 경로를 반환합니다. 홈 디렉터리의 값에 따라 설정합니다. 사용자 홈 디렉터리는 로컬 사용자와 그룹에서 지정하며, 홈 디렉터리가 로컬 경로에 위치하면, 이 환경변수의 값은 공백(NULL)을 반환합니다. 윈도XP에서만 정의하고 있습니다. |
%NUMBER_OF_PROCESSORS% | 컴퓨터에 설치된 프로세서의 수를 지정합니다. 이것은 컴퓨터 하드웨어인 CPU 모듈의 갯수 또는 CPU 모듈과 CPU 코어의 곱의 계산값으로 나타납니다. 예컨대 단일 코어의 CPU 모듈이 1개라면 1 x 1 = 1을 반환합니다. 그러나 듀얼 코어 CPU가 4개라면 2 x 4 = 8을 반환합니다.
|
%OS% |
|
%Os2LibPath% | OS/2 라이브러리의 경로를 반환한다. 윈도NT4 및 윈도2000 에서만 정의되어 있다. |
%PATH% | This variable contains a semicolon-delimited (do not put spaces in
between) list of directories in which the command interpreter will
search for an executable file that matches the given command.
Equivalent to the Unix $PATH variable.
|
%PATHEXT% | 운영 체제에서 실행 가능하다고 간주되는 파일 확장명 목록을 반환합니다.
|
%PROCESSOR_ARCHITECTURE% | 프로세서의 칩 아키텍처를 반환합니다. 값은 다음과 같습니다. x86, IA64 등.
|
%PROCESSOR_IDENTIFIER% | 프로세서의 설명을 반환합니다.
|
%PROCESSOR_LEVEL% | 컴퓨터에 설치된 프로세서의 모델 번호를 반환합니다.
|
%PROCESSOR_REVISION% | 프로세서의 수정 버전 번호를 반환합니다.
|
%Public% |
|
%RANDOM% | This variable returns a random number between 0 and 32767. Cmd.exe에서 생성합니다.
|
%SystemDrive% | The %SystemDrive% variable is a special system-wide environment variable found on Microsoft Windows NT and its derivatives. Its value is the drive upon which the system folder was placed. Also see next item.
The value of %SystemDrive% is in most cases C:.
|
%SystemRoot% | The %SystemRoot% variable is a special system-wide environment variable found on Microsoft Windows NT and its derivatives. Its value is the location of the system folder, including the drive and path. The drive is the same as %SystemDrive% and the default path on a clean installation depends upon the version of the operating system. By default, on a clean installation:
|
%TEMP% %TMP% |
시스템 프로그램이 사용하는 기본 임시 디렉터리를 반환합니다. 어떤 프로그램에는 TEMP가 필요하고 어떤 프로그램은 TMP가 필요합니다.
|
%TIME% | This variable points to the current time. The time is displayed according to the current user's time format preferences.
|
%windir% | This variable points to the Windows directory (on Windows NT-based
operating systems it is identical to the %SystemRoot% variable, above).
If the System is on drive C: then the default values are:
|
%winbootdir% | 윈도9X 계열 운영체제가 설치된 위치를 반환합니다.
|
로컬 변수
변수 | 설명 |
---|---|
%ALLUSERSPROFILE% | The %AllUsersProfile% variable expands to the full path to the All
Users profile directory. This profile contains resources and settings
that are used by all system accounts. Shortcut links copied to the All Users' Start menu or Desktop folders will appear in every user's Start menu or Desktop, respectively.
|
%APPDATA% | Contains the full path to the Application Data folder of the logged-in user. Does not work on Windows NT 4.0 SP6 UK.
|
%CD% | This variable points to the current directory. Equivalent to the output of the command cd when called without arguments.
|
%CLIENTNAME% | 로그인 환경이 로컬인지 원격인지에 따른 문자열을 반환합니다.
|
%CMDCMDLINE% | 현재 Cmd.exe를 시작하는 데 사용되는 정확한 명령줄을 반환합니다.
|
%LOCALAPPDATA% | 로컬 사용자만을 위해 설치된 응용 프로그램이 기본적으로 데이터를 저장하는 위치를 반환합니다.
|
%LOGONSERVER% |
|
%ProgramData% |
|
%PROMPT% |
|
%TEMP% %TMP% |
현재 로그온한 사용자가 사용할 수 있는 응용 프로그램이 사용하는 기본 임시 디렉터리를 반환합니다. 어떤 프로그램에는 TEMP가 필요하고 어떤 프로그램은 TMP가 필요합니다.
|
%USERDOMAIN% | 사용자 계정을 포함한 도메인 이름을 반환합니다. The variable holds the name of the Workgroup or Windows Domain to which the current user belongs. The related variable, %LOGONSERVER%, holds the hostname of the server that authenticated the current user's logon credentials (name and password). For Home PCs, and PCs in a Workgroup, the authenticating server is usually the PC itself. For PCs in a Windows Domain, the authenticating server is a domain controller (a primary domain controller, or PDC, in Windows NT 4-based domains).
|
%USERNAME% | 현재 로그온한 사용자 이름을 반환합니다.
|
%USERPROFILE% | The %UserProfile% variable is a special system-wide environment variable found on Microsoft Windows NT and its derivatives. Its value is the location of the current user's profile directory, in which is found that user's HKCU registry hive (NTUSER). Users can also use the %USERNAME% variable to determine the active users login identification.
|
변수 | 설명 |
---|---|
%ProgramFiles% %ProgramFiles(x86)% %ProgramW6432% |
This variable points to Program Files directory, which stores all the installed program of Windows and others. The default on English-language systems is C:\Program Files. In 64-bit editions of Windows (XP, 2003, Vista), there are also %ProgramFiles(x86)% which defaults to C:\Program Files (x86) and %ProgramW6432% which defaults to C:\Program Files. The %ProgramFiles% itself depends on whether the process requesting the environment variable is itself 32-bit or 64-bit (this is caused by Windows-on-Windows 64-bit redirection).
|
%CommonProgramFiles% | This variable points to Common Files directory. The default is C:\Program Files\Common Files.
|
%SessionName% | 윈도2000 이후 버전에서 터미널 서비스 시스템 구성요소(Terminal Services system component)가 설치된 경우에만 정의된다. 로컬에서 로그인했을 때는 Console을 기본값으로 반환한다. |
위의 표 세 가지를 읽을 때 다음과 같은 점에 주의하십시오.
- 혹시라도 명령줄에서 set 명령으로 찾을 수 없는 환경 변수는 윈도 레지스트리 키(Windows Registry key)인 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 에서 찾을 수 있다. 몇몇 로컬 변수는 HKEY_CURRENT_USER\Environment 에서 찾을 수 있다.
- 기본값과 표시값은 서로 같지 않다. 기본값은 레지스트리 등에서 정의하는 값이고, 표시값은 명령 프롬프트에서 SET 명령으로 확인할 수 있는 값이다. 윈도NT 계열(윈도NT/2000/XP 등)에서는 서로 다른 값을 가지므로 주의해야 한다(결과적으로 둘 다 같다). 위의 설명에서는 윈도XP를 기준으로 기본값과 표시값을 나누었으며, 두 값이 같다면 기본값만 표시했다.
- 위의 환경변수 설명에서 {USERNAME}, {사용자가 쓰고 있는 컴퓨터 이름}이라는 부분은 시스템 환경에 따라 달라진다. 각자 자신의 컴퓨터에서 확인하기 바란다. 참고로 {USERNAME}의 값은 환경변수 %USERNAME%의 값에 따라 달라지며, {사용자가 쓰고 있는 컴퓨터 이름}은 %COMPUTERNAME%에 따라 달라진다.
- 비스타 기본값은 표시값과 구분하지 않았다. 실제로 비스타를 설치하지 않은 이상 알 수 없기 때문이다.
- Environment Variables 문서에서는 %SystemDirectory%라는 환경변수를 소개하고 있지만, 어디에서도 찾을 수 없었다.
도스의 환경 변수
MS-DOS v6.22를 설치했을 때의 환경 변수는 그다지 많지 않다. COMPSPEC, PROMPT, PATH, TEMP, 이렇게 네 개가 전부이다(참고 : 환경 변수 1).
참조 문서
내부 문서
외부 문서
- MS테크넷 :: 명령 셸 개요
- 위키백과 :: 환경 변수(한국어) / Environment variable(영어)
- Environment Variables
- Windows Platform Comparison Environment Variable Reference
- Accessing Environment Variables :: Table 7-3 Environment Variables Set by the Operating System
- Windows Vista- Environment variables
다음 예고
GOTO 문과 레이블에 대해서 알아보기로 하자.
내용을 보니 최근에 컴퓨터에 대한 것을 모두 정리하고 계시나 보내요.
답글삭제@도아 - 2009/05/04 18:02
답글삭제예. 제 자신이 공부하는 내용을 올리고 있습니다.
자세히 정리 하셨네요.. 좋은 정보 담아갑니다..^^
답글삭제@호기심 - 2009/07/16 09:32
답글삭제막상 찾아보니 정리해놓은 것이 없어서 정리했지요. ^^a
도움이 되었다니 저도 기분이 좋네요.
모꼬모지 님이 제시한 글( http://blog.naver.com/mokomoji/130030255427 )에서 나타난 마이크로소프트 주소는 현재 존재하지 않고, 그에 따라 그 문서들이 테크넷에 있었던 글이라는 증거는 찾지 못했습니다. 그러므로 문서가 존재했다는 증명을 해 주시기 바랍니다.
답글삭제모꼬모지 님이 제시한 주소 : http://www.microsoft.com/technet/prodtechnol/windowsserver2003/ko/library/ServerHelp/44500063-fdaf-4e4f-8dac-476c497a166f.mspx?mfr=true (이 주소는 존재하지 않는다.)
koc/SALM이 제시한 주소 : http://technet.microsoft.com/en-gb/library/bb490954.aspx (2009년 11월 18일 현재 이 주소의 한국어 번역은 존재하지 않는다. 곧, http://technet.microsoft.com/ko-kr/library/bb490954.aspx 과 같은 주소를 입력하면 영어로 된 페이지를 그대로 보여준다.)
그리고 본문과 스프링노트의 글에서 복제로 여겨지는 부분은 삭제하겠습니다. 모꼬모지 님 말대로 거의 남는 부분이 없게 되네요. 이때 제가 실제로 모꼬모지 님의 글을 보고 쓴 적도 없고, 네이버의 글을 퍼온 복제물을 보고 쓰지도 않았으나, 저작권법에서는 버터플라이 효과를 인정하지 않기 때문에 삭제할 뿐입니다. 다시 말해 이미 존재하는 저작물과 우연히 같더라도 뒤에 창작한 작품은 법적으로 복제물에 해당하며, 먼저 작성된 저작물만이 인정됩니다. (이것이 표절이냐 아니냐는 다른 문제가 됩니다.) 그러므로 모꼬모지 님의 삭제 요구는 정당하다고 인정되는 바 삭제하겠습니다.
참고로 헬렌 켈러는 우연히 내용이 동일한 저작물을 작성하였으나, 헬렌 켈러의 특수한 사정(보지도 듣지도 못한다)이 참작되어 표절이 아니라고 판결이 났습니다. 그러나 21세기인 오늘날에는 그와 같은 경우 표절로서 판결이 납니다.
또한 회사의 도산은 곧 회사 망한 것입니다. 네띠앙이 도산했다는 말은 모꼬모지 님이 쓰신 표현이고, 그것을 제가 네띠앙이 망했다고 바꾸었을 뿐입니다.
모꼬모지 님의 블로그가 5월 초까지는 제가 검색할 수 없었을 수도 있습니다. (핑계일 수도 있지만...)
답글삭제왜냐하면 네이버 자료의 외부 검색 허용이 2009년부터였기 때문입니다. 다시 말해 2008년까지는 외부 검색 엔진(예컨대 구글 등)에서 네이버 자료를 거의 검색할 수 없었습니다.
참조 1 : http://diary.naver.com/150073934323
참조 2 : http://help.naver.com/service/svc_index.jsp?faqId=FAQS0000012303&selected_nodeId=NODE0000000041
위 두 참조 페이지를 보면 2009년부터 허용되었다는 뜻이지요. 2008년까지는 모꼬모지 님의 블로그에 무엇이 있는지 네이버 외부에서 알 수 있는 방법이 없었습니다. 아울러 외부 검색과 관련한 네이버 공지가 4월 말에 있었다고 하는데, 찾을 수가 없었습니다.
이 경우에는 앞서 말한 헬렌켈러와 같은 예외가 인정될 수 있습니다.(저는 어차피 예외 대상이 아닙니다만...)
그리고 저에게 모꼬모지 님 글을 베꼈다고 자꾸 억지를 쓰시기에 검색을 해 봤습니다. 이런 글도 있답니다.
참조 : http://qaos.com/article.php?sid=2264
모꼬모지 님 글과 비슷해서 순간 놀랐다는... (비록 일부이지만...)
그리고 테크넷의 한국어 번역 페이지를 찾았습니다. 조금 엉뚱한 곳에 있어서 오래 걸렸네요.
참조 : http://technet.microsoft.com/ko-kr/library/cc737438%28WS.10%29.aspx (윈도2003 항목)
영문 : http://technet.microsoft.com/en-gb/library/bb490954.aspx (윈도XP 항목)
참고로 위 페이지의 검색에 사용한 것은 "응용 프로그램이 기본적으로 데이터를 저장하는 위치" (모꼬모지 님 글에 있는 글귀이며 따옴표를 포함하여 검색했습니다) 라는 글귀입니다. 이때 모꼬모지 님의 블로그는 검색되지 않았으며, 네이버에서 검색된 페이지는 http://cafe.naver.com/ArticleRead.nhn?clubid=10012786&articleid=2566&menuid=22&boardtype=L&page=1 입니다.
이때 참조 페이지가 그 아래 영문 페이지의 번역본이라는 의미는 아닙니다.
먼저 저의 고집만 부려서 죄송합니다. 저도 그냥 데충 집필자가 해달라는데로
답글삭제그냥 해줘도 되는걸.. 구지 고집부러 여기까지 온것 같구요..
물론 저작권 관련해서 다소 견해 차이가 있었습니다만..
지금 출처를 남기고 글을 다시 퍼간다고 해도..
이글은 제가 원하는 글이 아니기에.. 할수 없죠..
다시한번 죄송하게 됐구요..
즐거운 블로그 라이프 되시길 기원 하겠습니다.
ㅎ 여기까지 다 봤어용~!
답글삭제좋은 정보 감사감사~!
@진만고양이 - 2010/04/09 18:03
답글삭제수고하셨습니다.