이중 루트 폴더와 단일 루트 폴더


14

내 리눅스 박스에서, bash에서 두 개의 슬래시로 표시된 "double root"폴더에 접근 할 수있다 :

tomas:~ $ cd /
tomas:/ $ ls
bin/ cdrom@ ...
tomas:/ $ cd //
tomas:// $ ls 
bin/ cdrom@ ...

폴더와 하위 폴더의 내용은 "일반"단일 슬래시 루트와 동일합니다. 하위 폴더에 액세스 할 때 이중 슬래시가 사라지지 않습니다. 이 이상은 세 번 이상의 슬래시로 반복되지 않습니다. 다음은 루트의 간단한 동의어입니다.

tomas:// $ cd home/tomas
tomas://home/tomas $ cd ///
tomas:/ $ cd ////
tomas:/ $

어떤 장소입니까? 버그입니까? 누구든지 그 예외를 설명 할 수 있습니까?


좋은 질문-나는 같은 행동을 보았지만 왜 이런 일이 발생했는지 묻지 않았습니다.
lajuette

답변:


18

에서 배쉬 자주 묻는 질문 E10 :

E10) 왜 'cd //'가 $ PWD를 '//'로 남겨 두는가?

'cd'에 대한 설명에서 POSIX.2 는 현재 작업 디렉토리를 정규화 할 때 3 개 이상의 선행 슬래시가 단일 슬래시로 대체 될 수 있다고 말합니다 .

이것은 역사적 호환성을위한 것으로 추정됩니다. 특정 버전의 Unix 및 초기 네트워크 파일 시스템에서는 // hostname / path 형식의 경로를 사용하여 'hostname'서버의 'path'에 액세스했습니다.


1
도메인 / OS는 그러한 시스템 중 하나입니다.
user1686

1
이중 슬래시가 여전히 사용됩니다. 그것은 Universal (또는 Uniform; 기본 소스를 찾을 수없는) Naming Convention 또는 UNC의 일부입니다. Windows, Unix 및 Linux에 나타납니다. URL에 이중 슬래시가 사용되는 이유입니다.
Isaac Rabinovitch

1

"버그가 아니라 기능입니다!"

여전히 같은 루트 디렉토리에 있습니다. 나는 이것의 기원을 모르지만 절대 경로를위한 문자열을 만드는 것과 관련이 있다고 생각합니다. 다른 사람이 확실하게 알고 있다면 위로 배관하십시오.


0

여러 개의 슬래시는 사용하는 도구에 의해 무시되며 항상 동일한 루트 폴더로 이동합니다.


그렇다면 bash는 왜 //를 그대로두고 ///를 /로 바꾸는가?
Tomas

0

경로 이름 확인을 위해 여러 개의 슬래시는 단일 슬래시로 처리됩니다.

쉘 프롬프트에서 볼 수있는 것은 bash PS1 처리의 결과입니다 (bash 맨 페이지의 "PROMPTING"섹션 참조).

[root@linux /]# cd /    ; echo $PWD
/
[root@linux /]# cd //   ; echo $PWD
//
[root@linux //]# cd /// ; echo $PWD
/
[root@linux /]# cd //// ; echo $PWD
/

결과는 프리젠 테이션의 문제 일뿐입니다. 당신은 항상 같은 루트 디렉토리에 있습니다. 에서 확인하여 확인할 수 있습니다 /proc/$$/root.

[편집] 그럼 난이 알지도 못하는 http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap04.html#tag_04_11 표준에 의해 정의되지 않은 채로 남아 "//"의 의미를, 그러나 "///" 더 많은 슬래시는 "/"와 같습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.