노무현 대통령 배너
BLOG main image
왕미친놈의 왕미친세상입니다. 미친 소리는 써도 되지만, 근거 없는 소리는 쓰면 안 됩니다.


한컴오피스 베타버전 버그 27 - 유니코드 버그 3 및 글꼴 버그 1 - Unicode Full Set 지원??

ᄒᆞᆫ글2010 베타버전에서는 Unicode Full Set을 지원한다고 밝히고 있습니다. 자세한 사항은 한컴오피스2010 오픈베타 홈페이지에 있는 기능 설명서를 다운로드하여 읽어보기 바랍니다. 그런데 이때 Unicode Full Set은 무엇을 뜻할까요? 2009년 10월 1일 발표한 최신 유니코드 5.2일까요? 그게 아니라면 2008년에 발표한 유니코드 5.1? 2006년 발표한 5.0? 그게 아니면…? 저는 적어도 유니코드 5.0은 지원하리라 생각했습니다. 왜냐하면 한컴오피스2007이라는 제품이 있었기 때문입니다. 그런데 아니더군요. ᄒᆞᆫ글2010 베타버전유니코드 4.1도 제대로 지원하지 않았습니다.

벌레의 유형

ᄒᆞᆫ글 씨! ᄒᆞᆫ글에서 지원한다는 유니코드 버전 좀 알려주면 덧납니까? 사용자가 ᄒᆞᆫ글 프로그램에서 지원하는 유니코드 버전을 알기 위해 그 고생을 하도록 합니까?

개발자의 답변

2010년 1월 28일 버그 리포팅을 한 상태입니다.

벌레의 발견

일단 나는 한글 자모 영역만을 살펴보고는 ᄒᆞᆫ글2010한컴오피스2010 베타에서 유니코드 5.2 또는 유니코드 5.1을 지원한다고 믿고 말았다. 조금만 더 신경을 썼더라면 전혀 그렇지 않음을 알았을 텐데, 지금 생각하면 참 어리석었습니다.

유니코드 지원이란?

유니코드 지원은 크게 두 가지로 나뉩니다. 하나는 유니코드 코드표를 지원한다는 뜻입니다. 다른 하나는 유니코드를 화면에 나타낼 수 있게 한다는 뜻이지요. 워드프로세서를 제외한 오피스 프로그램이라면 당연히 코드표만 지원하면 완벽한 지원으로 볼 수 있습니다. 그러나 워드프로세서는 사정이 다릅니다. 코드표로는 아무런 의미도 없기 때문입니다. 워드프로세서란 문서를 실제로 출력해 주어야만 그 기능이 완성된다는 점에서 보면 ᄒᆞᆫ글2010은 유니코드를 제대로 지원하지 못하고 있습니다.

'한컴오피스의 유니코드 지원'을 말한 사람은?

이런 헛소문을 퍼뜨린 사람이 누구인지를 검색해 보았습니다. 검색하다가 보니 제 블로그가 상당히 많이 눈에 띄더군요. 헛!

각설하고 우선 한글과컴퓨터 한컴오피스2010 오픈베타 홈페이지에서 그 헛소리를 발견했습니다. 오호 애재라!

Unicode Full Set 지원? 정말??

Unicode Full Set 지원? 정말??

저처럼 눈 나쁜 사람을 위해 그 부분만 잘랐습니다.

저처럼 눈 나쁜 사람을 위해 그 부분만 잘랐습니다.

함초롬돋움과 함초롬바탕 글꼴이 가독성과 미려함이 좋습니다. 하지만 Unicode Full Set을 지원하지는 않습니다. 검증은 아래에서 하기로 하고 다른 웹페이지도 살펴보죠.

베타뉴스한컴오피스 2010 Beta 설명에서도 Unicode Full Set을 지원한다고 그러네요.

베타뉴스에 나타난 Unicode Full Set을 지원 글귀

베타뉴스에 나타난 Unicode Full Set을 지원 글귀

조금 다른 기사도 있습니다. 이투데이한컴, 오피스시장 점유율 20%에 도전한다라는 기사인데, 여기에 유니코드 글꼴에 대한 내용이 나옵니다.

함초롬체를 직접 언급한 이투데이 기사

함초롬체를 직접 언급한 이투데이 기사

이렇게까지 언론에서 말할 정도라면… 애초에 Unicode Full Set 지원을 말한 사람은 한글과컴퓨터사라는 뜻이겠죠? 더구나 유니코드를 지원하는 글꼴은 한컴오피스2010 베타에서 새롭게 제공하는 함초롬체라는 뜻이고요. 그렇지 않습니까?

'한컴오피스의 유니코드 지원'은 Unicode Full Set일까?

'한컴오피스의 유니코드 지원'은 Unicode Full Set일까요? 유감스럽게도 최신 버전은 아닙니다. 다시 말해 유니코드 5.2Full Set으로 지원하지는 않는다는 뜻입니다.

이것은 위키백과의 한컴 2바이트 코드 문서에 나타난 사항을 검증하면서 발견하였습니다(ᄒᆞᆫ글2010 베타버전과 유니코드 버그 1 및 문자표 버그 1 참조). 그 글에서 밝혔듯이, 이 문자표와 관련한 사항은 또 다른 판도라 상자였습니다.

위키백과의 한컴 2바이트 코드 문서에서 틀린 점을 발견했는데, 그 부분 덕분에 이 버그를 발견하게 되었습니다.

위키백과의 한컴 2바이트 코드 문서의 마지막 부분

위키백과의 한컴 2바이트 코드 문서의 마지막 부분

위 화면에서 빨간색 네모로 묶은 부분은 틀린 내용입니다. 그래서 [출처 필요]라는 출처를 요구하는 태그가 붙어 있습니다(제가 붙였습니다. ^.^v). U+470C의 한자는 䜌이며, 이것은 유니코드 5.2에서 옳은 표기입니다. 여기에서 중요한 부분은 또 다른 유니코드 번호인 U+9FBB와 그 아래에 파란 밑줄 부분입니다. U+9FBB에 해당하는 한자가 나타나지 않았는데, 이는 화면 글꼴인 굴림 글꼴에 저 번호에 해당하는 글자가 없기 때문입니다. 다르게 말하면, 아니 조금 심하게 말하면, 굴림 글꼴은 유니코드를 제대로 지원하지 못하는 글꼴이라는 말이 됩니다. 그렇다면 ᄒᆞᆫ글은 저것을 잘 나타낼까요? 파란 밑줄 부분이 사실이라면 저 한자는 나타낼 수 없습니다.

일단 유니코드 문자표는 없나요? 문서에서 부수별 한자 색인 목록이 있는 PDF 파일(RSIndex.pdf 파일)을 아도비 리더에서 불러오겠습니다.

어도비 리더에서 불러온 부수 색인 파일 136쪽의 400% 확대 화면

어도비 리더에서 불러온 부수 색인 파일 136쪽의 400% 확대 화면

그런데 U+470C 문자와 U+9FBB 문자가 서로 모양이 같습니다. 다만 U+9FBB가 지나치게 위로 치우쳐 있습니다. 이런 경우는 저 문자가 실제로 문자로 쓰이는 게 아니라, 다른 문자의 일부로써 쓰일 때 주로 나타나는 현상입니다.

실제 문자표 파일(CodeCharts-MulticolHan.pdf 파일)에서는 어떻게 나타나는지 살펴봅시다.

어도비 리더에서 불러온 한자 파일 747쪽 제1단의 200% 확대 화면

어도비 리더에서 불러온 한자 파일 747쪽 제1단의 200% 확대 화면

U+9FBB가 지나치게 위로 배치되어 있습니다. 그런데 그 앞에 나온 문자들도 만만치 않습니다. 위로 치우치거나 왼쪽으로 치우쳐 있습니다. 이 말은 이 문자들이 정상적인 글자로 쓰이지 않고 다른 용도로 쓰인다는 추측을 가능하게 합니다. 이는 곧 위키백과의 한컴 2바이트 코드 문서의 마지막 부분 그림에 나타난 빨간 네모 안의 내용이 틀렸다는 근거이기도 하지요.

이제 앞서 언급한 ᄒᆞᆫ글이 저 문자를 잘 나타내는지를 살펴보겠습니다. 위키백과의 한컴 2바이트 코드 문서의 마지막 부분 그림의 파란 밑줄 부분이 사실이라면 저 한자는 나타낼 수 없고, 그것이 거짓이라면 나타낼 수 있어야 합니다.

문자표를 불러 유니코드 문자표 탭에서 9FBB를 찾습니다.

ᄒᆞᆫ글2010의 문자표에서 나타나지 않은 U+9FBB 코드 포인트

ᄒᆞᆫ글2010의 문자표에서 나타나지 않은 U+9FBB 코드 포인트

ᄒᆞᆫ글2010의 문자표는 코드 포인트 U+9FBB에 해당하는 글자를 나타내지 못하고 있습니다.
이때 코드 포인트는 흔히 코드 값으로 부르는 것의 정식 명칭인데, 유니코드에서 다른 글자와 겹치지 않는 그 글자만의 고유값을 가리킵니다. 현재까지 유니코드에 배정된 코드 포인트는 모두 111만4112개입니다.

단순히 글꼴에서 표시해 주지 못할 뿐이라는 생각도 할 수 있습니다. 하지만 저 문자표의 글꼴은 현재 커서가 놓인 곳의 글꼴을 따르게 되어 있습니다. 그리고 지금 커서가 놓인 곳은 글꼴은 함초롬돋움 글꼴입니다.

현재 글꼴은 함초롬돋움

현재 글꼴은 함초롬돋움

아, 함초롬돋움함초롬바탕은 다를 수 있다고요? 그럼 바꿔 보겠습니다.

현재 글꼴은 함초롬바탕

현재 글꼴은 함초롬바탕


글꼴은 바뀌어도 U+9FBB 코드 포인트의 글자는 나타나지 않습니다.

글꼴은 바뀌어도 U+9FBB 코드 포인트의 글자는 나타나지 않습니다.

그렇다면 다른 글꼴도 시험해 보겠습니다. 유명한 셰어웨어 유니코드 글꼴Code2000로 바꾸겠습니다. 물론 함초롬체도 유니코드 글꼴입니다.

한글이 밉게 나와서 자주 쓰지 않는 Code2000 글꼴

한글이 밉게 나와서 자주 쓰지 않는 Code2000 글꼴

참고로 저는 아직 Code2000 라이선스를 갖고 있지 않습니다. 다시 말해 비등록 사용자인 셈이지요. 이 글을 쓰기 위해 다운로드해서 설치했습니다.

Code2000 글꼴로 바꾼 뒤 잘 나타나는 코드 포인트 U+9FBB의 글자

Code2000 글꼴로 바꾼 뒤 잘 나타나는 코드 포인트 U+9FBB의 글자

위 그림에서 자주색 테두리를 친 부분은 유니코드 4.1에서 추가된 부분입니다. 다시 말해 2005년 3월 31일에 이미 유니코드 표준이 된 글자입니다. 그렇다면 이투데이 기사의 내용대로 함초롬체 개발에 2년이 소요되었더라도 이미 추가했어야 할 글자라는 뜻입니다. 참고로 파란색 테두리를 두른 부분은 유니코드 5.1에서 추가된 부분입니다.

한자의 모양을 화면에 나타내지 못한다고 해서 유니코드를 지원하지 않는다는 말은 잘못되었다는 의견도 있을 수 있습니다. 그러나 저 글자 가운데 어떤 글자도 ᄒᆞᆫ글의 한자 사전에서 음과 훈, 한어병음 가운데 어느 하나도 나타나 있지 않습니다. 물론 음과 훈은 정해져 있지 않고, 한어병음도 정해져 있지 않을 수 있습니다. 그러나 단 하나, 정해져 있는 것이 있습니다. 바로 획수입니다.[각주:1]

획수조차 나타나지 않는 한자 사전

획수조차 나타나지 않는 한자 사전

도대체 무엇을 근거로 Unicode Full Set을 지원한다는 말을 했을까요?

벌레 분석

Unicode Full Set을 지원한다는 말은 그저 광고 문구로만 볼 수 없습니다. 상당히 많이 기대한 ᄒᆞᆫ글의 유니코드 지원이지만, 결과적으로 한글 자모만의 지원이라는 생각이 듭니다. 물론 한국에서 개발한 프로그램이므로 한글 자모만 지원되어도 충분할 수 있습니다. 그러나 그것이 Unicode Full Set 지원을 뜻하지는 않는다고 생각합니다.

관련 벌레

이 벌레와 관련이 있는 벌레는 다음과 같습니다.

관련 문서

내부 문서

외부 문서

이 글은 스프링노트에서 작성되었습니다.


  1. 정해진 것이 하나 더 있습니다. 바로 글자의 외형(glyph)입니다. 다만 글자의 외형은 글꼴에서 지원하지 않으면 나타낼 수 없으므로, 실제로 정해진 것은 바로 획수입니다. [본문으로]
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

알리는 말

11월 18일 수정

본문의 내용이 저작권을 침해할 우려가 있다는 모꼬모지 님의 의견이 있었습니다. 처음에는 본문에 해당하는 한국어 번역이 없다고 여겼으나, 모꼬모지 님이 이미 번역한 부분이 있었고, 저는 그것을 모르는 상태에서 본문을 작성하였습니다. 그에 따라 번역문이 낱말은 물론 토씨까지 일치하는 곳을 상당 부분 발견하였고, 그러한 부분을 대부분 삭제하였으며, 꼭 필요한 일부는 남겼습니다(예컨대 PROCESSOR_ 로 시작하는 환경변수).

그로 말미암아 설명이 삭제된 부분이 생겼는데, 일부는 영어 위키백과Environment variable에서 내용을 복사하여 붙였습니다. 제 블로그의 라이선스가 GFDL이고 위키백과도 GFDL이기 때문에 가능했습니다. 영문 그대로 둔 이유는 번역할 경우 그 결과물이 이미 번역된 다른 글과 같을 수 있다는 염려 때문입니다. 한국어 위키백과에 내용이 추가되기 전까지는 본문의 영어 부분을 한국어로 번역하지 않을 생각입니다.

그와 함께 변수 구분을 위해 하위 개요를 두어 표를 두 개로 분리하였습니다.

11월 19일 수정

모꼬모지 님께 먼저 죄송하다는 말을 드려야겠네요.

죄송합니다.

위키백과의 사랑방에서 과거에 있었던 여러 토론을 살펴본 결과 링크만 걸려 있으면 그다지 문제가 없다는 의견을 여럿 보게 되었습니다. 결국 제가 너무 까탈스럽게 굴었다는 말이네요.
너무 원칙만 고수하다 보니 본의 아니게 모꼬모지 님과 논쟁을 벌이게 되어습니다. 앞으로는 좀 더 시야를 넓혀 이번과 같은 일이 다시 일어나지 않도록 하겠습니다.

말뜻

환경 변수(環境 變數)는 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이다.[각주:1] 이때 변수들은 명령줄 위에서, .BAT 확장자를 가지는 일괄 처리 파일, 또는 스크립트 안에서 쓰일 수 있다. 변수 이름 주변이나 앞에 특별한 기호(예 : %)를 놓아서 참조하는 것이 보통이다.

윈도 테크넷의 정의에 따르면,[각주:2] Cmd.exe 명령 셸 환경은 명령 셸 및 운영 체제의 동작을 결정하는 변수에서 정의한다. 시스템과 로컬, 이 두 가지 환경 변수를 사용하여 명령 셸 환경 또는 전체 운영 체제 환경의 동작을 정의할 수 있다. 시스템 환경 변수는 전체 운영 체제 환경의 동작을 정의하며, 로컬 환경 변수는 현재 Cmd.exe 인스턴스의 환경 동작을 정의한다.

시스템 환경 변수는 운영 체제에 미리 설정되어 Windows XP의 모든 프로세스에서 사용할 수 있다. 관리 권한이 있는 사용자만 시스템 변수를 변경할 수 있으며, 이 변수는 로그온 스크립트에서 가장 많이 사용한다. 로컬 환경 변수는 그 변수를 사용하도록 만든 사용자가 컴퓨터에 로그온한 경우에만 사용할 수 있다. 로컬 변수는 HKEY_CURRENT_USER 하이브에서 설정하고 현재 사용자인 경우에만 유효하지만 전체 운영 체제 환경의 동작을 정의합니다.

윈도 환경에서 환경 변수의 유형은 다음과 같습니다.

  1. 기본 제공 시스템 변수
  2. HKEY_LOCAL_MACHINE 하이브에 있는 시스템 변수
  3. HKEY_CURRENT_USER 하이브에 있는 로컬 변수
  4. 모든 환경 변수 및 Autoexec.bat 파일에서 설정된 경로
  5. 모든 환경 변수 및 로그온 스크립트에서 설정된 경로
  6. 스크립트 또는 배치 파일과 상호 작용하는 변수

윈도의 환경 변수

윈도의 기본 환경 변수는 다음과 같다.[각주:3] 변수명에는 퍼센트 기호(%)를 붙이지 않지만, 배치파일에서 사용한다고 가정하여 퍼센트 기호(%)를 붙인 상태로 표시하였다.

시스템 변수

여기에서 말하는 시스템 변수는 기본 제공 시스템 변수와 레지스트리에 저장된 시스템 변수를 편의상 통틀어 이르는 명칭이다.

윈도의 기본 환경 변수는 다음과 같다.[각주:4]

변수 설명
%CMDEXTVERSION%
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT4 - 1
  • 윈도2000 및 윈도XP - 2
%COMPUTERNAME% 컴퓨터 이름을 반환합니다. 정확하게는 현재 컴퓨터의 NetBOIS 이름을 반환한다.
  • 윈도9X 및 NT4 기본값 - 정의되지 않음
  • 윈도2000 이후 기본값 - 현재 컴퓨터의 컴퓨터 이름
%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.
  • 윈도9X 기본값 - C:\WINDOWS\COMMAND.COM
  • 윈도NT 기본값 - %SystemRoot%\system32\cmd.exe
  • 윈도NT 표시값 -
    • NT4 - C:\WINNT\system32\cmd.exe
    • 윈도2000 이후 - C:\WINDOWS\system32\cmd.exe
%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.

  • 기본값 - 시스템의 날짜. 한글 윈도에서는 YYYY-MM-DD(윈도ME/2000 이후) 또는 YY-MM-DD(윈도95/98)의 형태로 나타내 준다.
  • 표시값 - (한글 윈도XP) 2009-05-03
%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.
이 환경변수는 SET 명령으로는 볼 수 없습니다.

%HOMEDRIVE%
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT 기본값 - C:
%HOMEPATH%
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT 기본값 - \Documents and Settings\{USERNAME}
  • 비스타 기본값 - \Users\{USERNAME}
%HOMESHARE% 사용자 공유 홈 디렉터리의 네트워크 경로를 반환합니다. 홈 디렉터리의 값에 따라 설정합니다. 사용자 홈 디렉터리는 로컬 사용자와 그룹에서 지정하며, 홈 디렉터리가 로컬 경로에 위치하면, 이 환경변수의 값은 공백(NULL)을 반환합니다. 윈도XP에서만 정의하고 있습니다.
%NUMBER_OF_PROCESSORS% 컴퓨터에 설치된 프로세서의 수를 지정합니다. 이것은 컴퓨터 하드웨어인 CPU 모듈의 갯수 또는 CPU 모듈과 CPU 코어의 곱의 계산값으로 나타납니다. 예컨대 단일 코어의 CPU 모듈이 1개라면 1 x 1 = 1을 반환합니다. 그러나 듀얼 코어 CPU가 4개라면 2 x 4 = 8을 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
%OS%
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT 기본값 - Windows_NT
%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.
  • 윈도9X 기본값 - C:\WINDOWS;C:\WINDOWS\COMMAND
  • 윈도NT 기본값 - %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
  • 윈도NT 표시값 - C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
%PATHEXT% 운영 체제에서 실행 가능하다고 간주되는 파일 확장명 목록을 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도XP 기본값 - .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
  • 비스타 기본값 - .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.WSF;.WSH;.MSC
%PROCESSOR_ARCHITECTURE% 프로세서의 칩 아키텍처를 반환합니다. 값은 다음과 같습니다. x86, IA64 등.
  • 윈도9X 기본값 - 정의되지 않음
%PROCESSOR_IDENTIFIER% 프로세서의 설명을 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
%PROCESSOR_LEVEL% 컴퓨터에 설치된 프로세서의 모델 번호를 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
%PROCESSOR_REVISION% 프로세서의 수정 버전 번호를 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
%Public%
  • 비스타 기본값 - C:\Users\Public
%RANDOM% This variable returns a random number between 0 and 32767. Cmd.exe에서 생성합니다.
  • 윈도9X 및 윈도NT4 기본값 - 정의되지 않음.
%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:.

  • 윈도9X 계열 - 정의되지 않음
  • 윈도NT 기본값 - 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:

  • 윈도9X 계열 - 정의되지 않음
  • 윈도NT 계열 기본값 -
    • Windows NT 5.1 (Windows XP) and newer versions use \WINDOWS
    • Windows NT 5.0 (Windows 2000), Windows NT 4.0 and Windows NT 3.1 use \WINNT
    • Windows NT 3.5x uses \WINNT35
%TEMP%
%TMP%
시스템 프로그램이 사용하는 기본 임시 디렉터리를 반환합니다. 어떤 프로그램에는 TEMP가 필요하고 어떤 프로그램은 TMP가 필요합니다.
  • 윈도9X 계열 기본값 - C:\WINDOWS\TEMP
  • 윈도NT 계열 시스템 기본값 - %SystemRoot%\TEMP
  • 윈도NT 계열 시스템 표시값 -
    • NT4 및 윈도2000 - C:\WINNT\TEMP
    • 윈도XP 이후 - C:\WINDOWS\TEMP
%TIME% This variable points to the current time. The time is displayed according to the current user's time format preferences.
  • 기본값 - 시스템의 날짜. 한글 윈도에서는 오전/오후 hh-mm의 형태로 나타내 준다.
  • 표시값 - (한글 윈도XP) 오후 03:36
%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:
  • 윈도9X 계열 기본값 - C:\WINDOWS
  • 윈도NT 계열 기본값 - %SystemRoot%
  • 윈도NT 계열 표시값
    • NT4 및 윈도2000 - C:\WINNT
    • NT4 Terminal Server Edition - C:\WTSRV
    • 윈도XP 이후 - C:\WINDOWS
%winbootdir% 윈도9X 계열 운영체제가 설치된 위치를 반환합니다.
  • 윈도9X 및 윈도2000 기본값 - C:\WINDOWS

로컬 변수

변수 설명
%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.
  • 윈도9X 및 NT4 기본값 - 정의되지 않음
  • 윈도 2000 이후 기본값 - C:\Documents and Settings\All Users
  • 비스타 기본값 - C:\ProgramData
%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.
  • 윈도9X 및 NT4 기본값 - 정의되지 않음
  • 윈도 2000 이후 기본값 - %USERSPROFILE%\Application Data
  • 윈도 2000 이후 표시값 - C:\Documents and Settings\{USERNAME}\Application Data
  • 비스타 기본값 - C:\Users\{USERNAME}\AppData\Roaming
%CD% This variable points to the current directory. Equivalent to the output of the command cd when called without arguments.
  • 윈도9X 및 NT4 기본값 - 정의되지 않음
%CLIENTNAME% 로그인 환경이 로컬인지 원격인지에 따른 문자열을 반환합니다.
  • 윈도2000 이전 기본값 - 정의되지 않음
  • 윈도XP 이후 기본값 - 로컬이면 Console을 반환
%CMDCMDLINE% 현재 Cmd.exe를 시작하는 데 사용되는 정확한 명령줄을 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT 기본값 - 일반적으로 %ComSpec% 환경변수의 값을 반환한다.
%LOCALAPPDATA%

로컬 사용자만을 위해 설치된 응용 프로그램이 기본적으로 데이터를 저장하는 위치를 반환합니다.

  • 비스타 기본값 - C:\Users\{USERNAME}\AppData\Local
%LOGONSERVER%
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT 기본값 - \\%COMPUTERNAME%
  • 윈도NT 표시값 - \\{사용자가 쓰고 있는 컴퓨터 이름}
%ProgramData%
  • 비스타 기본값 - C:\ProgramData
%PROMPT%
  • 기본값 - $P$G
%TEMP%
%TMP%
현재 로그온한 사용자가 사용할 수 있는 응용 프로그램이 사용하는 기본 임시 디렉터리를 반환합니다. 어떤 프로그램에는 TEMP가 필요하고 어떤 프로그램은 TMP가 필요합니다.
  • 윈도9X 계열 기본값 - C:\WINDOWS\TEMP
  • 윈도NT 계열 로컬 기본값 - %USERPROFILE%\Local Settings\Temp
  • 윈도NT 계열 로컬 표시값 - C:\DOCUME~1\{USERNAME}\LOCALS~1\Temp
  • 비스타 기본값 - C:\Users\{USERNAME}\AppData\Local\Temp (%LOCALAPPDATA%\Temp 라고 추정)
%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).

  • 윈도9X 계열 기본값 - 정의되지 않음
  • 윈도NT 계열 기본값 - %COMPUTERNAME%
  • 윈도NT 계열 표시값 - 현재 사용하는 컴퓨터 이름을 나타내 준다.
%USERNAME% 현재 로그온한 사용자 이름을 반환합니다.
  • 윈도9X 계열 기본값 - 정의되지 않음
  • 윈도NT 계열 기본값 - {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.

  • 윈도9X 계열 기본값 - 정의되지 않음
  • 윈도NT 계열 기본값 - C:\Documents and Settings\{USERNAME}
  • 비스타 기본값 - C:\Users\{USERNAME}
변수 설명

%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).

  • 윈도9X 계열 - 정의되지 않음.
  • 윈도NT 계열 기본값 - C:\Program Files
%CommonProgramFiles%

This variable points to Common Files directory. The default is C:\Program Files\Common Files.

  • 윈도9X 계열 및 NT4 - 정의되지 않음.
  • 윈도2000 이후 기본값 - 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).

참조 문서

내부 문서

외부 문서

다음 예고

GOTO 문과 레이블에 대해서 알아보기로 하자.

  1. 한국어 위키백과 : 환경 변수 [본문으로]
  2. 명령 셸 개요 :: Cmd.exe와 함께 환경 변수 사용 문서를 참조하였다. [본문으로]
  3. 명령 셸 개요 :: Cmd.exe와 함께 환경 변수 사용 문서, Environment Variables 문서, Windows Platform Comparison Environment Variable Reference 문서, Windows Vista- Environment variables 문서 등을 참조하였다. [본문으로]
  4. 변수명에는 퍼센트 기호(%)를 붙이지 않지만, 배치파일에서 사용한다고 가정하여 퍼센트 기호(%)를 붙인 상태로 표시하였다. [본문으로]

'스크립트' 카테고리의 다른 글

환경 변수 1  (0) 2009.05.02
이런저런 이야기  (6) 2009.03.30
스크립트란 무엇인가? 배치파일이란 무엇인가?  (8) 2009.03.21
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

카테고리

분류 전체보기 (1005)
스크립트 (22)
벌레와 팁 (126)
소프트웨어 (240)
하드웨어 (6)
이야기 (24)
말의 나무 (506)
미쳐보자 (22)
일기 (48)
아이폰 (10)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2024/04   »
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

글 보관함