mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Tuesday, March 14, 2006

컴퓨터 초보자를 위한 강좌] 패스(Path)란 무엇인가


마우스로 아이콘을 클릭하는, 그래픽 유저 인터페이스 (Graphical User Interface; GUI) 환경에서는 패스 개념이 희박하지만, 명령줄 실행 환경(Command Line Interface; CLI)에서는 패스가 필요하다.

가령 명령 프롬프트에서, Foo.exe라는 파일을 실행시키기 위해 foo 라는 명령을 주어도, Foo.exe 가 현재 디렉토리(폴더)에 없고 다른 폴더에 있다면, 컴퓨터는 Foo.exe를 실행시킬 수 없다. 만약 컴퓨터가 모든 폴더들을 다 뒤져본다면 되겠지만 수천 개나 되는 폴더를 다 뒤져 보려면 시간이 오래 걸리기 때문에 아예 찾기를 포기하는 것이다. (또한, 같은 이름을 가진 다른 파일이 잘못 실행되는 위험을 방지하기 위한 목적도 있기는 하다)

그러면 중요한 특정 디렉토리 몇 개만 간단히 뒤져보라고 지정해 주면 될 것 아닌가. 그렇다. 그렇게 지정해 주는 것이 바로 패스다. 패스는 파일이 아닌, '환경 변수 (environment variable)'라는 메모리에 저장된다.

윈도를 설치하면 이미 패스 몇 개가 지정되어 있다. 주로 윈도 시스템 폴더들이다. 여기에 사용자가 직접 자신이 필요한 폴더를 추가해 주어야 한다.

만약 배치 파일이나 펄 스크립트를 하나 만들었다면 그것을, 패스가 걸린 폴더에 넣어 두어야 한다. 그렇지 않으면 그 파일을 다른 폴더에서 실행시키기 힘들다. 그 파일의 모든 경로를 일일히 타이핑해 주지 않으면 아예 실행되지 않는다. (물론 그 파일의 '바로 가기 아이콘'을 만들어 데스크탑에 놓아두면 되겠지만, 이러면 실행할 때 옵션을 바꾸기 힘들다.)



Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

D:\Z>dir
D 드라이브의 볼륨: Foo
볼륨 일련 번호: 3451-A472

D:\Z 디렉터리

2006-03-11  03:09p      <DIR>          .
2006-03-11  03:09p      <DIR>          ..
2006-03-11  03:08p              11,528 새 텍스트 문서.txt
2006-03-11  02:17p              27,136 참고 사이트.doc
              2개 파일          38,664 바이트
              2 디렉터리  43,660,181,504 바이트 남음

D:\Z>

"윈도 시작 버튼/프로그램/보조 프로그램/명령 프롬프트"에서 dir 등의 시스템 내장 명령을 사용하면 위와 같은 화면이 나온다.





D:\Z>foo
'foo'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다.

D:\Z>

컴퓨터에 foo.exe 나 foo.bat 이 있다고 가정할 때, foo 라고 치면 그것이 실행된다. (foo.exe에 우선권이 있다) 그러나 foo.exe 나 foo.bat이 현재 디렉토리(폴더)가 아닌 다른 디렉토리에 있다면, 실행되지 않고 위의 화면처럼 에러 메시지가 나온다.

다른 폴더에 있는 파일을 현재 폴더에서 실행시키기 위해서는 그 파일의 전체 경로를 적어 주거나(예: D:\Bar\Foo.exe), 그 파일이 있는 폴더를 패스(Path)에 추가해야 한다.


명령 프롬프트에서 set 명령을 실행시키면 현재 Path 로 지정되어 있는 폴더들의 목록이 나온다.


D:\Z>set
...<중략>...
Path=C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;D:\WINDOWS_\Path;D:\Perl\bin
...<중략>...


set 명령을 치면 굉장히 많은 문자열들이 쏟아져 나오는데, 다른 것은 볼 필요 없고 "Path=..." 부분만 보면 된다.

Path=C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;D:\WINDOWS_\Path;D:\Perl\bin

이것은 다음의 디렉토리(폴더)들이 패스로 현재 지정되어 있다는 의미이다. 즉 실행 파일을 현재 디렉토리에서 찾다가 없으면 아래의 디렉토리들도 뒤져서 찾아본다는 이야기다.

C:\WINNT\system32
C:\WINNT
C:\WINNT\System32\Wbem
D:\WINDOWS_\Path
D:\Perl\bin


위의 목록에 사용자가 자신의 디렉토리를 추가하기 위해서는 다음의 절차를 따르면 된다:


클릭하면확대
패스 환경 변수 변경
패스 환경 변수를 바꾸기 위한 절차. 클릭하면 확대

"내 컴퓨터 아이콘/(마우스 오른쪽 클릭) 등록 정보/고급/환경 변수"의 단계로 이 창을 열 수 있다.

좌측 하단의 빨간 화살표가 가리키고 있는 곳에 Path 항목이 있다. 이 Path 항목을 마우스로 클릭하여 선택한 후 (현재 그림에서는 Path가 아닌 PROCESSOR_ARCHITECTURE라는 곳이 선택되어 있다) "편집" 버튼을 누르면 된다. "변수 값"이라는 곳에 디렉토리(경로)들이 나타나는데 이것을 편집해 준다.

가령 패스에 "D:\Bar"라는 폴더를 추가하려면, 좌측 화살표키를 한 번 눌러 선택을 해제한 후, 기존의 패스 끝에, 세미콜론(;)을 하나 찍고 D:\Bar 라고 적어 주면 된다. (기존의 패스를 지우거나, 이렇게 Path=D:\Bar 라고 D:\Bar만을 적으면 절대 안된다.)

예를 들어 윈도2000의 경우 다음과 같다:


추가 전: Path=C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem

추가 후: Path=C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;D:\Bar


세미콜론(;)이다. 그냥 콜론(:)이 아니라는 것에 주의. (아주 초보자를 위해 더 자세히 설명하자면, Shift키를 누른 채, 콜론(:)키를 누르면, 세미콜론(;)이 찍힌다) 좀 확대하자면 이것이다.
;

이것으로 디렉토리들을 연결해 준다.


이런 메뉴로 편집하지 않고 명령 프롬프트에서 set 명령을 이용해 패스를 편집할 수도 있는데, 그러면 편집 결과가 시스템에 저장이 되지 않으므로 주의.



패스의 효과적인 사용

명령줄에서 실행할 파일이 있는 모든 폴더를 이런 식으로 적어주면 패스가 너무 길어져서 곤란하다. 실행할 파일들을 되도록 "한 폴더에 몰아넣고" 그 폴더 하나만 패스에 넣어주는 것이 좋다.

패스의 예에 있는 "D:\WINDOWS_\Path"라는 폴더에 주목해 보자. 이것은 윈도에 기본으로 있는 것이 아니라 필자가 만든 것이다. 배치 파일(.bat)이나, 파일 하나로 실행되는 간단한 실행파일(.exe), 펄 스크립트(.pl) 들을 모두 이 폴더에 넣어놓고 패스를 지정해 주었다.

가령
Rar.exe 같은, 콘솔용 압축 유틸리티나
tee.exe 같은, 유닉스 툴의 Win32 버전 등이 이 폴더에 들어 있다. (물론 윈도에 기본으로 들어 있는 파일은 아니다.)

패스에 넣을 폴더의 이름에, 공백이나 한글이나 특수 문자가 들어가면 문제가 생길 수 있다. 되도록 영문과 숫자 8자 이내로 이름을 정하자.



그러나 하나의 파일로 실행되지 않는 exe파일이나, 폴더를 마음대로 옮길 수 없는 프로그램은, 하나의 폴더에 이렇게 몰아넣을 수 없다.

가량 윈집(WinZip)의 코맨드 라인 버전인 WZUNZIP.EXE는 혼자서 실행되지 않기에 다른 폴더로 옮기기 곤란하다. 그러나 WZUNZIP.EXE를 다른 폴더에서 실행시키기 위해, 윈집 폴더(D:\Program Files\WinZip) 자체를 패스에 추가하는 것은 낭비다. 이때는 WZUNZIP.EXE를 가리키는 배치 파일을 만들어서 그 배치 파일을 "D:\WINDOWS_\Path" 등의 폴더에 넣어 두면 된다. 아래는 그 예이다.

WzUNZIP.bat 의 내용:
@echo off
"D:\Program Files\WinZip\WZUNZIP.EXE" %*


이제 아무 폴더에서나 wzunzip 이라고 치면, 비록 WZUNZIP.EXE 가 아닌 WzUNZIP.bat 이 먼저 실행되긴 하지만, 결과는 동일하다.






여담

명령줄 환경이라는 것은 일명 "도스창"으로 불리는데, 진짜 도스는 아니고 32비트 환경이다. 컴퓨터를 깊이 다루기를 위해서는 이 명령줄 환경에 익숙해질 필요가 있다. 고급 유틸리티들은 그래픽 환경이 아닌, 명령줄 환경으로 제공되는 것이 많다.

가량 자신의 IP주소(IP Address)를 알기 위해서는
ipconfig
명령을 사용한다. (엄밀히 말해서, ipconfig는 명령어가 아니라 ipconfig.exe 라는 프로그램이다.)





명령 프롬프트에서
help
라는 명령을 쳐 보자. 리눅스의 그것에 비할 바는 아니지만, 상당히 많은 명령어들의 리스트가 나온다.

※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함

D:\Z>help


특정 명령에 관한 자세한 내용을 보려면, 다음과 같이 입력하십시오: HELP 명령어
ASSOC    파일 확장명 연결을 보여주거나 수정합니다.
AT       명령어와 프로그램의 실행을 스케쥴합니다.
ATTRIB   파일 속성을 표시하거나 바꿉니다.
BREAK    확장된 CTRL+C 검사를 설정하거나 지웁니다.
CACLS    파일의 액세스 컨트롤 목록(ACL)을 표시하거나 수정합니다.
CALL     한 일괄 프로그램에서 다른 일괄 프로그램을 호출합니다.
CD       현재 디렉터리 이름을 보여주거나 바꿉니다.
CHCP     활성화된 코드 페이지의 수를 표시하거나 설정합니다.
CHDIR    현재 디렉터리 이름을 보여주거나 바꿉니다.
CHKDSK   디스크를 검사하고 상태 보고서를 표시합니다.
CHKNTFS  부팅하는 동안 디스크 확인을 화면에 표시하거나 변경합니다.
CLS      화면을 지웁니다.
CMD      Windows 2000 명령 인터프리터의 새 인스턴스를 시작합니다.
COLOR    콘솔의 기본색과 배경색을 설정합니다.
COMP     두 개 또는 여러 개의 파일을 비교합니다.
COMPACT  NTFS 분할 영역에 있는 파일의 압축을 표시하거나 변경합니다.
CONVERT  FAT 볼륨을NTFS로 변환합나다. 현재 드라이브는 변환할 수 없습니다.
COPY     하나 또는 그 이상의 파일을 다른 위치로 복사합니다.
DATE     날짜를 보여주거나 설정합니다.
DEL      하나 또는 그 이상의 파일을 지웁니다.
DIR      디렉터리에 있는 파일과 하위 디렉터리 목록을 보여줍니다.
DISKCOMP 두 플로피 디스크의 내용을 비교합니다.
DISKCOPY 플로피 디스크의 내용을 다른 플로피 디스크로 복사합니다.
DOSKEY   명령 줄을 편집하고, Windows 2000 명령을 다시 호출하고, 매크로를 만듭니
다.
ECHO     메시지를 보여주거나, 명령어 반향을 켜거나 끕니다.
ENDLOCAL 일괄 파일에서 환경 변경의 지역화를 끝냅니다.
ERASE    하나 또는 그 이상의 파일을 지웁니다.
EXIT     CMD.EXE 프로그램 (명령 인터프리터)를 마칩니다.
FC       두 파일 또는 파일의 집합을 비교하고 둘 사이의 다른 점을 표시합니다.
FIND     파일에서 텍스트 문자열을 찾습니다.
FINDSTR  파일에서 문자열을 찾습니다.
FOR      파일 집합에서 각 파일에 대해 지정된 명령을 실행합니다.
FORMAT   Windows 2000에서 사용할 디스크를 포맷합니다.
FTYPE    파일 확장 연결에 사용되는 파일 형식을 표시하거나 수정합니다.
GOTO     Windows 2000 명령 인터프리터가 일괄 프로그램에서 이름표가 붙여진
        줄로 가게 합니다.
GRAFTABL Windows 2000이 그래픽 모드에서 확장 문자 세트를 표시할 수 있게 합니다.
HELP     Windows 2000 명령어에 관한 도움말을 제공합니다.
IF       일괄 프로그램에서 조건 처리를 수행합니다.
LABEL    디스크의 볼륨 이름을 만들거나, 바꾸거나, 지웁니다.
MD       디렉터리를 만듭니다.
MKDIR    디렉터리를 만듭니다.
MODE     시스템 장치를 구성합니다.
MORE     출력을 한번에 한 화면씩 표시합니다.
MOVE     하나 또는 그 이상의 파일을 한 디렉터리에서 다른 디렉터리로 옮깁니다.
PATH     실행 파일의 찾기 경로를 보여주거나 설정합니다.
PAUSE    일괄 파일의 처리를 보류하고 메시지를 보여줍니다.
POPD     PUSHD 명령으로 저장된 디렉터리로 바꿉니다.
PRINT    텍스트 파일을 인쇄합니다.
PROMPT   Windows 2000 명령 프롬프트를 바꿉니다.
PUSHD    현재 디렉터리를 저장한 후 디렉터리를 바꿉니다.
RD       디렉터리를 지웁니다.
RECOVER  불량이거나 결함이 있는 디스크에서 읽을 수 있는 정보를 복구합니다.
REM      일괄 파일 또는 CONFIG.SYS에서 주석을 기록합니다.
REN      파일 이름을 바꿉니다.
RENAME   파일 이름을 바꿉니다.
REPLACE  파일을 대체합니다.
RMDIR    디렉터리를 지웁니다.
SET      Windows 2000 환경 변수를 보여주거나, 설정하거나, 지웁니다.
SETLOCAL 일괄 파일에서 환경 변경의 지역화를 시작합니다.
SHIFT    일괄 파일에서 바꿀 수 있는 매개 변수의 위치를 바꿉니다.
SORT     입력을 정렬합니다.
START    지정된 프로그램이나 명령을 별도의 창에서 시작합니다.
SUBST    경로를 드라이브 문자로 지정합니다.
TIME     시스템 시간을 보여주거나 설정합니다.
TITLE    CMD.EXE 세션에 대한 창의 창 제목을 설정합니다.
TREE     드라이브 또는 경로의 디렉터리 구조를 그래픽으로 화면에 표시합니다.
TYPE     텍스트 파일의 내용을 보여줍니다.
VER      Windows 2000 버전을 보여줍니다.
VERIFY   파일이 디스크에 올바로 쓰였는지 검증할지 여부를 지정합니다.
VOL      디스크 볼륨 이름과 일련 번호를 보여줍니다.
XCOPY    파일과 디렉터리 트리를 복사합니다.

D:\Z>




위의 명령어들 중에서 궁금한 것이 있다면, 특정 명령어 뒤에 /? 를 붙이면, 아래와 같이 더 자세한 도움말이 나온다. 윈도XP도 마찬가지다:



※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함

D:\Z>DIR /?
디렉터리에 있는 파일과 하위 디렉터리 목록을 보여줍니다.

DIR [드라이브:][경로][파일 이름] [/A[[:]특성]] [/B] [/C] [/D] [/L] [/N]
 [/O[[:]정렬 순서]] [/P] [/Q] [/S] [/T[[:]시간 필드]] [/W] [/X] [/4]

 [드라이브:][경로][파일 이름]
             나타낼 드라이브, 디렉터리 및/또는 파일을 지정합니다.

 /A          지정된 특성을 가진 파일을 보여줍니다.
 특성        D  디렉터리                   R  읽기 전용 파일
             H  숨김 파일                  A  기록 파일
             S  시스템 파일                -  부정을 뜻하는 접두사
 /B          최소 형식을 사용합니다 (머리말 정보나 요약 없음).
 /C          파일 크기에 1000단위로 분리 기호를 보여줍니다. 이것은 기본값
             입니다. 분리 기호를 표시하지 않으려면 /-C를 사용하십시오.
 /D          /W와 같으나 세로로 배열하여 보여줍니다.
 /L          소문자를 사용합니다.
 /N          파일 이름이 제일 오른쪽에 오도록 새로운 긴 목록 형식을
             사용합니다.
 /O          파일을 정렬된 순서로 보여줍니다.
 정렬순서    N  이름순(문자 순서)    S  크기순(작은 것 먼저)
             E  확장명순(문자 순서)  D  날짜/시간순(가장 이전 것 먼저)
             G  그룹 디렉터리 먼저         -  순서를 반대로 하는 접두 기호
 /P          정보가 한 화면에 꽉 차면 잠깐 멈춥니다.
 /Q          파일 소유자를 보여 줍니다.
 /S          지정한 디렉터리와 하위 디렉터리를 포함하여 보여줍니다.
 /T          정렬에 사용할 시간 필드를 지정합니다.
 시간필드   C  작성한 시간
             A  마지막 액세스한 시간
             W  마지막 기록한 시간
 /W          이름만 가로로 배열하여 보여줍니다.
 /X          8.3 파일 이름이 아닌 파일에 대한 짧은 이름을 보여줍니다.
             이 형식은 긴 이름 앞에 짧은 이름이 추가된 것으로 /N 형식과
             같습니다. 짧은 이름이 없으면 공백을 보여줍니다.
 /4          4자리수 연도를 표시합니다.

스위치를 DIRCMD 환경 변수로 미리 설정할 수 있습니다. 하이픈(-)을
스위치 앞에 접두 기호로 주면 미리 설정된 스위치에 우선합니다. (예, /-W)


D:\Z>




관련 포스트: [컴퓨터 초보자를 위한 강좌] Z 폴더를 만들자

참고로, "명령 프롬프트" 아이콘의 (마우스 오른쪽 클릭하여) 등록정보에서 "시작 위치"를 "D:\Z" 등으로 변경해 주면 편리하다.




tag: windows
윈도우 | Windows 7 | Windows XP | Windows 2000

4 Comments:
At March 15, 2006 at 10:26 AM, Blogger mwultong said...

set temp 그리고 set tmp 는
TEMP 환경 변수를 정해주는 곳인데요, 예전에 도스에서는 사용자가 직접 지정해 주어야 했지만, 윈도에서는 설치시에 이미 지정이 되어 있더군요.

TEMP 환경 변수는, '프로그램들이 각종 임시 파일을 저장하는 디렉토리'를 지정하는 곳입니다.

(∩_∩)

 
At March 15, 2006 at 2:36 PM, Blogger archmond said...

set [엔터]
하면 path 까지 나오죠?ㅎㅎ

path를 쉽게 추가하는 방법으로
path=%path%추가할디렉터리;

이렇게 알고 있습니다.

 
At March 16, 2006 at 10:48 AM, Blogger mwultong said...

예 그렇지요, set말고 path 명령으로도 추가할 수 있습니다.

path=%path%;추가할디렉토리

배치 파일 안에서 임시로 어떤 디렉토리를 패스에 추가할 때 유용한 방법입니다.

그런데 윈도2000/XP에서는, 명령 프롬프트 창을 종료시키면

path=%path%;추가할디렉토리

로 저장한 환경 변수가 사라져 버리기 때문에, "내 컴퓨터..." 아이콘으로 접근해서 고쳐 주어야 하는 방식으로 불편하게 변해 버렸습니다...

(∩_∩)

 
At April 1, 2007 at 1:54 PM, Anonymous Anonymous said...

랄라라님의 코멘트:

* autoexec.bat에서 많이 쓰던 명령어군요.. path..

set temp도 있었던 것 같은데 어디에 쓰는 건지는 모르겠습니다..


(새 블로거 버전에서는, 랄라라님의 한글 아이디 글자가 깨져서, 다시 올립니다.)

 

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top