경로

다른 뜻 **경로**(經路) 또는 **패스**(path)는 파일이나 디렉터리의 일반적인 형태로서 파일 시스템에서 고유한 위치를 지정한다. 경로는 문자열로 표현되는 디렉터리 트리 계층을 따라 시스템 위치를 가리키며 여기에서 구분자로 분리되는 경로 구성 요소를 통해 각각의 디렉터리를 대표하게 된다. 구분 문자는 대체적으로 슬래시("/"), 역슬래시 문자("\"), 콜론(":")이지만 일부 운영 체제는 다른 구분 문자를 사용할 수 있다. 경로는 현대 운영 체제에서 일반화된 디렉터리/파일 관계를 표현하기 위해 컴퓨터 과학 분야에 널리 쓰이며 URL의 구성에 필수적이다. 리소스는 절대 경로와 상대 경로로 표현할 수 있다
# 역사
멀틱스는 1960년대 중순에 >를 구분자로 하여 디렉터리가 있는 계층적 파일 시스템을 도입하였다url=http://dl.acm.org/citation.cfm?id=1463915. 1970년 즈음에 유닉스는 슬래시 문자("/")를 디렉터리 구분자로 도입하였다. 1981년에 최초 버전의 마이크로소프트 도스가 출시되었다. MS-DOS 1.0은 파일 디렉터리를 지원하지 않았다. 또, MS-DOS 1.0에 포함된 유틸리티 명령들 상당수가 IBM에서 비롯되었으며 명령 줄 문법은 슬래시 문자를 스위치(switch) 두문자로 사용하였다. 이를테면 dir /w는 넓은 목록 포맷 옵션과 함께 dir 명령을 실행하라는 의미이다. 윈도우에서는 명령 인터페이스에서 슬래시 사용을 볼 수 있다. 반면에 유닉스는 대시("-") 문자를 명령 줄 스위치 두문자로 사용한다. 버전 2.0 들어 MS-DOS에 디렉터리 지원이 추가되었을 때 "/"는 하위 호환성을 위해 스위치 두문자로 유지되었다. 마이크로소프트는 백슬래시 문자("＼")를 디렉터리 구분자로 선택하고 있으며, 이는 슬래시 문자와 비슷하게 보인다.
# 운영 체제와 셸의 경로 표현
{| class="wikitable" |- ! 운영 체제 ! 셸 ! 루트 디렉터리 ! 디렉터리 구분자 ! 현재 디렉터리 ! 부모 디렉터리 ! 홈 디렉터리 ! 예 |- ! 유닉스 계열 OS | 유닉스 셸 | `/` | align="center" | `/` | align="center" | `.` | align="center" | `..` | align="center" | `~` | `/home/user/docs/Letter.txt`
`./inthisdir`
`../../greatgrandparent`
`~/.rcinfo` |- ! 도스 | COMMAND.COM | `*[드라이브 문자:]*\` 또는
`\\*[서버 이름]*\*[볼륨]*\` | align="center" | `\` | align="center" | `.` | align="center" | `..` | align="center" | | `C:\USER\DOCS\LETTER.TXT`
`A:PICTURE.JPG`
`\\SERVER01\USER\DOCS\LETTER.TXT` |- ! OS/2 | Cmd.exe | `*[드라이브 문자:]*\` | align="center" | `/` 또는 `\` | align="center" | `.` | align="center" | `..` | align="center" | | `C:\user\docs\Letter.txt` `A:Picture.jpg` |- ! 마이크로소프트 윈도우 | Cmd.exe | `\` (현재 작업 디렉터리 루트에 상대적)
또는 `*[드라이브_문자]*:\`
또는 `\\*[서버]*\*[공유이름]*\`
또는 `\\?\*[드라이브_사양]*:\`
또는 `\\?\*[서버]*\*[공유이름]*\`
또는 `\\?\UNC\*[서버]*\*[공유이름]*\`
또는 `\\.\*[물리_장치]*\`

`/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`
|- ! 마이크로소프트 윈도우 | 윈도우 파워셸 | `*[드라이브 이름:]*/` 또는 `*[드라이브 이름:]*\`또는
`\\*[서버 이름]*\` 또는
`*[PSSnapIn 이름]*\*[PSProvider 이름:][:PSDrive 루트]*` | align="center" | `/` 또는 `\` | align="center" | `.` | align="center" | `..` | align="center" | `~` | `C:\user\docs\Letter.txt`
`\\Server01\user\docs\Letter.txt`
`cd ~\Desktop`
`UserDocs:/Letter.txt`
`Variable:PSVersionTable`
`Registry::HKEY_LOCAL_MACHINE\SOFTWARE\`
`Microsoft.PowerShell.Security\Certificate::CurrentUser\` |- ! TOPS-20 | DCL | `*[장치 이름:]*` | align="center" | `.` | align="center" | | align="center" | | align="center" | | `PS:LETTER.TXT,4` |- ! RSX-11 | MCR | `*[장치 이름:]*` | align="center" | | align="center" | | align="center" | | align="center" | | `DR0:[30,12]LETTER.TXT;4` |- ! OpenVMS | DCL | `*[장치 이름:]*[000000]` 또는
`*[NODE["accountname password"]]*::*[장치 이름]*[000000]:` | align="center" | `.` | align="center" | `[]` | align="center" | `[-]` | align="center" | `SYS$LOGIN:` | `SYS$SYSDEVICE:[USER.DOCS]PHOTO.JPG` `[]IN_THIS_DIR.COM;`
`[-.-]GreatGranParent.TXT`
`SYS$SYSDEVICE:[.DRAFTS]LETTER.TXT;4`
`GEIN::[000000]LETTER.TXT;4`
`SYS$LOGIN:LOGIN.COM`
|- ! 클래식 맥 OS | | `*[볼륨 또는 드라이브 이름]*:` | align="center" | `:` | align="center" | `:` | align="center" | `::` | align="center" | | `Macintosh HD:Documents:Letter`
`:fileincurrentdir`
`::fileinparent`
`:::fileingrandparent` |- ! ProDOS | AppleSoft BASIC | `/*[볼륨 또는 드라이브 이름]*/` | align="center" | `/` | align="center" | | align="center" | | align="center" | | `/SCHOOL.DISK/APPLEWORKS/MY.REPORT` `FLIGHT.SIMULATOR,D2` |- ! 아미가OS | Amiga CLI / AmigaShell | `*[드라이브, 볼륨, 장치, 또는 할당 이름]:*` | align="center" | `/` | align="center" | `""` (빈 문자열) | align="center" | `/` | align="center" | | `Workbench:Utilities/MultiView`
`DF0:S/Startup-Sequence`
`S:Startup-Sequence`
`TCP:en.wikipedia.com/80` |- ! RISC OS | ShellCLI | `*[fs 유형[#옵션]:][:드라이브 문자 또는 디스크 이름.]*$` &, % @을 사용하여 현재 사용자, 라이브러리, 현재 (작업) 디렉터리의 루트를 각각 참조할 수 있다. | align="center" | `.` | align="center" | `@` | align="center" | `^` | align="center" | `&` | `ADFS::MyDrive.$.Documents.Letter`
`Net#MainServer::DataDrive.$.Main.sy10823`
`LanMan::WindowsC.$.Pictures.Japan/gif`
`NFS:&.!Choices`
`ADFS:%.IfThere`
`@.inthisdir`
`^.^.greatgrandparent`

파일 확장자가 포함된 파일 시스템들이 마운트되면 '.' 문자는 '/'로 변경된다. |- ! 심비안 OS | File manager | align="center" | `\` | align="center" | `\` | align="center" | | align="center" | | | `*\user\docs\Letter.txt*` |- ! 도메인/OS | Shell | align="center" | `//` (도메인의 루트)
`/` (현재 노드의 루트)

`./inthisdir`
`\\greatgrandparent`
`~rcinfo` |- ! 미뉴엣OS | CMD | align="center" | `/` | align="center" | `/` | align="center" | | align="center" | | | |- ! Stratus VOS | VOS command-line interpreter | `%*[시스템_이름]*#*[모듈_이름]*>` | align="center" | `>` | align="center" | | align="center" | `SubDir>AnotherDir` |- ! 논스톱 커널 | TACL Tandem Advanced Command Language | 루트 없음 | align="center" | `.` | align="center" | | align="center" | 부모 디렉터리 없음 | align="center" | | `\NODE.$DISK.SUBVOL.FILE` `\NODE.$DEVICE` `\NODE.$DEVICE.#SUBDEV.QUALIFIER` |- ! CP/M | CCP | `*[드라이브 문자:]*` | align="center" | 하위 디렉터리 없음 | align="center" | 하위 디렉터리 없음 | align="center" | 부모 없음 | align="center" | 하위 디렉터리 없음 | `A:LETTER.TXT` |- ! GS/OS | | `*:[볼륨 이름]:*` 또는 `*.[장치 이름]:*` 또는 `*[두문자]:*` 참고: 두문자는 숫자(0-31), `*` (부트 볼륨) 또는 `@` (AppleShare 홈 디렉터리)가 올 수 있다 | align="center" | `:` 또는 `/` | align="center" | | align="center" | | align="center" | `@` | `:Apps:Platinum.Paint:Platinum.Paint`
`*:System:Finder`
`.APPLEDISK3.5B/file` |} 한국어와 일본어 버전의 윈도우는 원래의 디렉터리 구분자 대신 ₩ 문자와 ¥ 문자를 표시할 수 있다.