맨위로가기

경로

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

경로는 파일 시스템에서 파일이나 디렉터리의 위치를 나타내는 문자열이다. 1960년대 중반 멀틱스에서 처음으로 디렉터리를 사용하는 계층적 파일 시스템이 도입된 이후, 유닉스, MS-DOS, 윈도우 등 다양한 운영 체제에서 경로 표현 방식이 발전해 왔다. 유닉스 계열은 슬래시(/)를, MS-DOS와 윈도우는 백슬래시(\) 또는 슬래시(/)를 디렉터리 구분자로 사용하며, 절대 경로와 상대 경로의 개념을 가진다. 또한, UNC(범용 명명 규칙)는 네트워크 리소스의 위치를 나타내는 데 사용된다. 프로그래밍 언어에서도 파일 접근 시 경로를 사용하며, 운영 체제에 따라 경로 표현 방식이 다르므로 이식성을 고려하여야 한다.

2. 역사

파일 경로의 역사는 운영체제 발전과 함께한다. 초기에는 파일 디렉터리 개념이 없었으나, 멀틱스유닉스계층적 파일 시스템을 도입하면서 경로 구분의 필요성이 생겼다. 멀틱스는 '>'를, 유닉스는 '/'를 구분자로 사용했다.[16] MS-DOS는 초기에는 디렉터리를 지원하지 않았고, 명령어에 '/'를 스위치 문자로 사용했다. 이후 디렉터리 지원이 추가되면서 백슬래시('\')를 구분자로 도입했다.[2][3]

2. 1. 초기 시스템

멀틱스는 1960년대 중반에 디렉터리 구분자로 '>'를 사용하여 계층적 파일 시스템을 도입하였다.[1][16] 1970년경, 유닉스는 슬래시('/')를 디렉터리 구분자로 도입하였다.

2. 2. MS-DOS와 윈도우

1981년에 출시된 최초 버전의 MS-DOS는 파일 디렉터리를 지원하지 않았다. MS-DOS 1.0에 포함된 유틸리티 명령들 상당수는 IBM에서 비롯되었으며, 명령어에 슬래시(/)를 스위치 문자로 사용하였다. (예: `dir /w`)[16]

MS-DOS 2.0에서 디렉터리 지원이 추가되었을 때, 하위 호환성을 위해 '/'는 스위치 문자로 유지되었다. 마이크로소프트는 백슬래시('\')를 디렉터리 구분자로 선택했는데, 이는 슬래시와 비슷하게 보인다.[2][3] 한편, 한국어와 일본어 마이크로소프트 윈도우에서는 백슬래시 대신 ₩나 ¥가 표시되기도 한다.

3. 절대 경로와 상대 경로

절대 경로는 루트 디렉터리부터 시작하여 파일의 전체 위치를 나타낸다. 따라서 현재의 작업 디렉터리에 관계없이 파일 시스템 내의 동일한 위치를 가리킨다.

반대로, 상대 경로는 주어진 작업 디렉터리에서 시작하므로 전체 절대 경로를 제공할 필요가 없다. 파일명은 현재 작업 디렉터리를 기준으로 하는 상대 경로로 간주할 수 있다. 작업 디렉터리가 파일의 상위 디렉터리가 아닌 경우, 파일 이름을 사용하여 파일을 참조하면 파일을 찾을 수 없음 오류가 발생한다.

4. Base URL

API 경로의 일관된 부분으로, 여기에 엔드포인트 경로가 추가된다.

5. 운영 체제별 경로 표현

\\[서버 이름]\[볼륨]\\...align="center" |C:\USER\DOCS\LETTER.TXT
A:PICTURE.JPG
\\SERVER01\USER\DOCS\LETTER.TXTOS/2Cmd.exe[드라이브 문자:]\/ 또는 \...align="center" |C:\user\docs\Letter.txt
A:Picture.jpg마이크로소프트 윈도우Cmd.exe\ (현재 작업 디렉터리 루트에 상대적)
또는 [드라이브_문자]:\
또는 \\[서버]\[공유이름]\
또는 \\?\[드라이브_사양]:\
또는 \\?\[서버]\[공유이름]\
또는 \\?\UNC\[서버]\[공유이름]\
또는 \\.\[물리_장치]\/ 또는 \...[17]align="center" |C:\user\docs\Letter.txt
/user/docs/Letter.txt
C:Letter.txt
\\Server01\user\docs\Letter.txt
\\?\UNC\Server01\user\docs\Letter.txt
\\?\C:\user\docs\Letter.txt
C:\user\docs\somefile.ext:alternate_stream_name
./inthisdir
../../greatgrandparent마이크로소프트 윈도우윈도우 파워셸[드라이브 이름:]/ 또는 [드라이브 이름:]\또는
\\[서버 이름]\ 또는
/ 또는 \...~C:\user\docs\Letter.txt
\\Server01\user\docs\Letter.txt
cd ~\Desktop
TOPS-20DCL[장치 이름:].align="center" |align="center" |align="center" |PS:LETTER.TXT,4RSX-11MCR[장치 이름:]align="center" |align="center" |align="center" |align="center" |DR0:[30,12]LETTER.TXT;4OpenVMSDCL[장치 이름:][000000] 또는
.[][-]SYS$LOGIN:SYS$SYSDEVICE:[USER.DOCS]PHOTO.JPG
[]IN_THIS_DIR.COM;
클래식 맥 OS[볼륨 또는 드라이브 이름]:::::align="center" |Macintosh HD:Documents:Letter
:fileincurrentdir
::fileinparent
:::fileingrandparentProDOSAppleSoft BASIC/[볼륨 또는 드라이브 이름]//align="center" |align="center" |align="center" |/SCHOOL.DISK/APPLEWORKS/MY.REPORT
FLIGHT.SIMULATOR,D2아미가OSAmiga CLI / AmigaShell[드라이브, 볼륨, 장치, 또는 할당 이름]:/"" (빈 문자열)/align="center" |Workbench:Utilities/MultiView
DF0:S/Startup-Sequence
S:Startup-Sequence
TCP:en.wikipedia.com/80RISC OSShellCLI[fs 유형[#옵션]:][:드라이브 문자 또는 디스크 이름.]$
&, % @을 사용하여 현재 사용자, 라이브러리, 현재 (작업) 디렉터리의 루트를 각각 참조할 수 있다..@^&ADFS::MyDrive.$.Documents.Letter
Net#MainServer::DataDrive.$.Main.sy10823
LanMan::WindowsC.$.Pictures.Japan/gif
NFS:&.!Choices
ADFS:%.IfThere
@.inthisdir
^.^.greatgrandparent
파일 확장자가 포함된 파일 시스템들이 마운트되면 . 문자는 /로 변경된다.심비안 OSFile manager\align="center" |align="center" |\user\docs\Letter.txt도메인/OSShell// (도메인의 루트)
/ (현재 노드의 루트)/.\~//node/home/user/docs/Letter.txt
./inthisdir
\\greatgrandparent
~rcinfo미뉴엣OSCMD/align="center" |align="center" |Stratus VOSVOS command-line interpreter%[시스템_이름]#[모듈_이름]>>align="center" |<align="center" |%sysname#module1>SubDir>AnotherDir논스톱 커널TACL Tandem Advanced Command Language루트 없음.align="center" |부모 디렉터리 없음align="center" |\NODE.$DISK.SUBVOL.FILE
\NODE.$DEVICE
\NODE.$DEVICE.#SUBDEV.QUALIFIERCP/MCCP[드라이브 문자:]하위 디렉터리 없음하위 디렉터리 없음부모 없음하위 디렉터리 없음A:LETTER.TXTGS/OS:[볼륨 이름]: 또는 .[장치 이름]: 또는 [두문자]:
참고: 두문자는 숫자(0-31), * (부트 볼륨) 또는 @ (AppleShare 홈 디렉터리)가 올 수 있다.: 또는 /align="center" |align="center" |@:Apps:Platinum.Paint:Platinum.Paint
*:System:Finder
.APPLEDISK3.5B/fileOpenHarmony (incl. HarmonyOS)exec[6][7]hb set -root [ROOT_PATH]
hb set -p --product [PRODUCT_NAME]>./../LOCAL>MEDIA_TYPE_>Download>Letter.txt



한국어와 일본어 버전의 마이크로소프트 윈도우는 원래의 디렉터리 구분자 대신 ₩ 문자와 ¥ 문자를 표시할 수 있다. 이는 MS-DOS 초기 버전에서 7비트 ASCII만 지원하는 프로그램과의 호환성을 위해 백슬래시를 이러한 문자로 대체했기 때문이다.[8]

5. 1. 유닉스 계열

유닉스 셸을 사용하는 유닉스 계열 운영 체제에서 루트 디렉터리는 `/`로 표시되며, 디렉터리 구분자 또한 `/`이다. 현재 디렉터리는 `.`으로, 부모 디렉터리는 `..`으로, 홈 디렉터리는 `~`로 나타낸다. 예를 들어, `/home/user/docs/Letter.txt`는 `/home` 디렉터리 아래의 `user` 디렉터리 안에 있는 `docs` 디렉터리에 `Letter.txt` 파일이 있음을 의미한다.

루트 디렉터리디렉터리 구분자현재 디렉터리부모 디렉터리홈 디렉터리예시
//...~


5. 2. 도스, OS/2, 윈도우

\\[서버 이름]\[볼륨]\\C:\USER\DOCS\LETTER.TXT
A:PICTURE.JPG
\\SERVER01\USER\DOCS\LETTER.TXTOS/2Cmd.exe[드라이브 문자:]\/ 또는 \C:\user\docs\Letter.txt
A:Picture.jpg마이크로소프트 윈도우Cmd.exe\ (현재 작업 디렉터리 루트에 상대적)
또는 [드라이브_문자]:\
또는 \\[서버]\[공유이름]\
또는 \\?\[드라이브_사양]:\
또는 \\?\[서버]\[공유이름]\
또는 \\?\UNC\[서버]\[공유이름]\
또는 \\.\[물리_장치]\[17]/ 또는 \C:\user\docs\Letter.txt
/user/docs/Letter.txt
C:Letter.txt
\\Server01\user\docs\Letter.txt
\\?\UNC\Server01\user\docs\Letter.txt
\\?\C:\user\docs\Letter.txt
C:\user\docs\somefile.ext:alternate_stream_name
./inthisdir
../../greatgrandparent윈도우 파워셸[드라이브 이름:]/ 또는 [드라이브 이름:]\또는
\\[서버 이름]\ 또는
/ 또는 \C:\user\docs\Letter.txt
\\Server01\user\docs\Letter.txt
cd ~\Desktop

5. 3. 기타 운영체제

운영 체제루트 디렉터리디렉터리 구분자현재 디렉터리부모 디렉터리홈 디렉터리
클래식 맥 OS[볼륨 또는 드라이브 이름]:::::align="center" |Macintosh HD:Documents:Letter
:fileincurrentdir
::fileinparent
:::fileingrandparent
아미가OS[드라이브, 볼륨, 장치, 또는 할당 이름]:/"" (빈 문자열)/align="center" |Workbench:Utilities/MultiView
DF0:S/Startup-Sequence
S:Startup-Sequence
TCP:en.wikipedia.com/80
RISC OS[fs 유형[#옵션]:][:드라이브 문자 또는 디스크 이름.]$
&, % @을 사용하여 현재 사용자, 라이브러리, 현재 (작업) 디렉터리의 루트를 각각 참조할 수 있다.
.@^&ADFS::MyDrive.$.Documents.Letter
Net#MainServer::DataDrive.$.Main.sy10823
LanMan::WindowsC.$.Pictures.Japan/gif
NFS:&.!Choices
ADFS:%.IfThere
@.inthisdir
^.^.greatgrandparent
파일 확장자가 포함된 파일 시스템들이 마운트되면 . 문자는 /로 변경된다.


6. 프로그래밍 언어에서의 경로

프로그래밍 언어에서도 파일을 열 때와 같이 경로를 사용한다. 대부분의 프로그래밍 언어는 기본 운영 체제의 경로 표현을 따른다.

```c

uxFile = fopen("project/readme.txt", "r")

```

```c

winFile = fopen("C:\\Program Files\\bin\\config.bat", "r")

```

운영 체제 경로에 직접 접근하면 프로그램의 이식성이 떨어질 수 있다. 자바는 이식 가능한 프로그램을 지원하기 위해 `/`와 `\`로 구분된 경로를 구별하는 `File.separator`를 사용한다. Seed7은 경로 표현에 대해 다른 접근 방식을 가진다. Seed7에서는 모든 경로가 운영 체제에 관계없이 유닉스 경로 규칙을 사용한다. 윈도우에서는 매핑이 이루어진다(예: 경로 `/c/users`는 `c:\users`로 매핑된다).

7. 범용 명명 규칙 (UNC)

Universal Naming Convention|유니버설 네이밍 컨벤션영어 또는 Uniform Naming Convention|유니폼 네이밍 컨벤션영어의 약자인 UNC는 공유 파일, 디렉토리, 프린터와 같은 네트워크 리소스를 지정하는 데 사용되는 윈도우 시스템의 일반적인 구문이다.

UNC 구문 형식은 다음과 같다.

`\\ComputerName\SharedFolder\Resource`

마이크로소프트는 종종 이것을 '''네트워크 경로'''라고 부른다.

일부 마이크로소프트 윈도우 인터페이스는 WebDAV 공유 접근을 위해 URL 대신 UNC 구문을 허용하거나 요구한다. UNC 구문은 SSL 및 TCP/IP 포트 번호 사용을 나타내는 구성 요소를 추가하여 확장[9]될 수 있다. `http[s]://HostName[:Port]/SharedFolder/Resource`의 WebDAV URL은 다음과 같이 표현된다.

`\\HostName[@SSL][@Port]\SharedFolder\Resource`

원격으로 볼 때, "SharedFolder"는 서버의 프로그램이 "\SharedFolder"를 열 때 표시되는 것과 다른 이름을 가질 수 있다. 대신, SharedFolder 이름은 "공유"를 정의할 때 폴더에 할당된 임의의 이름으로 구성된다.

일부 마이크로소프트 윈도우 인터페이스는 "Long UNC"도 허용한다.

`\\?\UNC\ComputerName\SharedFolder\Resource`

8. POSIX 경로 이름 정의

POSIX유닉스 계열 시스템에서 경로 이름에 대한 표준을 정의한다. POSIX는 슬래시 두 개(//)로 시작하는 경로를 구현에 따라 다르게 처리할 수 있도록 허용하지만,[14] 그 외의 경우 시스템은 여러 개의 슬래시를 하나의 슬래시(/)로 처리해야 한다.[15]

9. 예제

경로는 크게 유닉스 스타일과 MS-DOS/윈도우 스타일로 나눌 수 있다.

디렉터리에서 파일 이름을 보여주는 윈도우 명령 셸의 스크린샷


유닉스 스타일과 MS-DOS/윈도우 스타일의 경로 예제를 통해 경로 사용법을 살펴본다. 자세한 내용은 각 스타일의 하위 섹션을 참고한다.

윈도우 시스템 API는 슬래시(/)를 허용하지만, cmd.exe 셸 등 많은 윈도우 응용 프로그램은 슬래시를 다른 목적으로 해석하거나 유효하지 않은 문자로 처리하므로 백슬래시(\)를 입력해야 한다. tcsh 및 Windows PowerShell과 같이 윈도우에서 사용할 수 있는 다른 셸은 슬래시를 허용한다.[4]

"\"는 "현재 디스크"의 루트를 나타내며, 현재 디스크가 아닌 디스크의 파일을 나타내려면 드라이브 문자 다음에 콜론(예: C:)을 붙여야 한다. UNC 이름(`\\`로 시작하는 경로)은 슬래시를 지원하지 않는다.[4]

9. 1. 유닉스 스타일 예제

유닉스 스타일 파일 시스템의 동작을 터미널 또는 터미널 응용 프로그램(명령줄 창)에서 볼 수 있는 방식으로 설명하는 예시는 다음과 같다.

현재 작업 디렉토리가 `/users/mark/`라고 가정한다.

현재 작업 디렉토리를 `/users/mark/bobapples`로 변경하려는 경우, 원하는 디렉토리의 '''상대 경로'''는 다음과 같다.

디렉토리의 절대 경로는 다음과 같다.

원하는 디렉토리의 상대 경로로 `bobapples`가 주어지면, 현재 작업 디렉토리를 `bobapples`로 변경하기 위해 명령 프롬프트에서 다음을 입력할 수 있다.

두 개의 점(`..`)은 계층 구조에서 위로 올라가 상위 디렉토리를 나타내고, 한 개의 점(`.`)은 현재 디렉토리 자체를 나타낸다. 두 점 모두 복잡한 상대 경로의 구성 요소가 될 수 있다(예: `../mark/./bobapples`). 여기서 `.`는 단독으로 또는 이러한 상대 경로의 첫 번째 구성 요소로 작업 디렉토리를 나타낸다. 현재 작업 디렉토리에서 파일 `foo`를 참조하기 위해 `./foo`를 사용하는 것은 기본 디렉토리 또는 다른 수단을 통해 찾을 수 있는 리소스 `foo`와 구별하는 데 유용할 수 있다. (예를 들어, 시스템에 설치된 매뉴얼 페이지 대신 특정 버전을 보려는 경우)[1]

9. 2. MS-DOS/윈도우 스타일 예제

윈도우 시스템 API는 슬래시(/)를 허용하지만, 많은 응용 프로그램, 특히 cmd.exe 셸은 슬래시를 다르게 해석하거나 유효하지 않은 문자로 처리하므로 백슬래시(\)를 사용해야 한다. tcsh 및 Windows PowerShell과 같은 다른 셸에서는 슬래시를 사용할 수 있다.[4]

\는 현재 디스크의 루트를 나타내며, 다른 디스크의 파일을 나타내려면 드라이브 문자(예: C:)를 사용해야 한다. UNC 이름( `\\`로 시작하는 경로)은 슬래시를 지원하지 않는다.[4]

다음은 MS-DOS/윈도우 스타일 경로의 예시이다.

다음은 슬래시를 디렉터리 구분 기호로 사용한 예시이다.

```doscon

C:\>more < C:/Windows/system.ini

; for 16-bit app support

[386Enh]

woafont=dosapp.fon

EGA80WOA.FON=EGA80WOA.FON

EGA40WOA.FON=EGA40WOA.FON

CGA80WOA.FON=CGA80WOA.FON

CGA40WOA.FON=CGA40WOA.FON

...

```

이 예제에서는 `more` 명령어를 사용하여 `C:/Windows/system.ini` 파일의 내용을 표시한다.

다음은 명령줄 스위치와 구별하기 위해 경로를 큰따옴표로 묶은 예시이다.

```doscon

E:\>dir "/Folder/SubFolder/" /Q

Volume in drive E is Data

Volume Serial Number is 07BE-0B10

Directory of E:\Folder\SubFolder

18 October 2008 08:15 AM DOMAIN\user .

18 October 2008 08:15 AM DOMAIN\user ..

18 October 2008 08:15 AM DOMAIN\user File.txt

1 File(s) 8 bytes

2 Dir(s) 19,063,000 bytes free

```

`CD` 명령어에서는 예외적으로 `/D` 스위치를 사용하여 현재 드라이브를 변경할 수 있다.

경로 이름에 공백이 있으면 스크립트가 중단될 수 있으므로, 환경 변수를 설정할 때는 공백이 없는 8.3 파일 이름을 사용해야 하는 경우가 있다. 다음 명령어를 사용하여 루트 바로 아래의 모든 디렉터리에 대한 8.3 파일 이름을 확인할 수 있다.

```doscon

C:\>dir /x

```

(사용자는 드라이브별로 8.3 파일 이름 생성을 비활성화할 수 있다.)

참조

[1] 간행물 A general-purpose file system for secondary storage 1965
[2] 웹사이트 Why Windows Uses Backslashes and Everything else Uses Forward Slashes https://www.howtogee[...] 2014-02-10
[3] 웹사이트 Why is the DOS path character ""? https://learn.micros[...] 2005-06-24
[4] 웹사이트 Naming Files, Paths, and Namespaces https://learn.micros[...] 2022-12-15
[5] 웹사이트 cd https://learn.micros[...] 2023-10-04
[6] 웹사이트 Introduction to the Shell https://github.com/e[...] OpenAtom OpenHarmony 2024-03-13
[7] 웹사이트 exec https://github.com/d[...] OpenAtom OpenHarmony 2024-03-14
[8] 웹사이트 When is a backslash not a backslash? http://archives.milo[...]
[9] 웹사이트 DavGetHTTPFromUNCPath function https://learn.micros[...] 2023-10-04
[10] 웹사이트 File path formats on Windows systems https://learn.micros[...] 2019-07-14
[11] 웹사이트 winapi - Is there a difference between \??\ and \\?\ paths? https://stackoverflo[...]
[12] 웹사이트 Path prefixes \??\ and \\?\ https://stackoverflo[...]
[13] 웹사이트 UNC Definition https://www.computer[...]
[14] 웹사이트 POSIX pathname resolution specification https://pubs.opengro[...]
[15] 웹사이트 POSIX pathname definition http://www.opengroup[...]
[16] 저널 A general-purpose file system for secondary storage http://dl.acm.org/ci[...] 1965
[17] 웹인용 Microsoft Technet Command Line Reference https://technet.micr[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com