
내 Linux 상자의 bash에서는 두 개의 슬래시로 표시된 "이중 루트" 폴더에 액세스할 수 있습니다.
tomas:~ $ cd /
tomas:/ $ ls
bin/ cdrom@ ...
tomas:/ $ cd //
tomas:// $ ls
bin/ cdrom@ ...
폴더와 해당 하위 폴더의 내용은 "일반" 단일 슬래시 루트와 동일합니다. 하위 폴더에 액세스할 때 이중 슬래시가 사라지지 않습니다. 세 개 이상의 슬래시로 이상 현상이 반복되지 않습니다. 다음은 루트에 대한 간단한 동의어입니다.
tomas:// $ cd home/tomas
tomas://home/tomas $ cd ///
tomas:/ $ cd ////
tomas:/ $
어떤 곳인가요? 버그인가요? 누구든지 이상 현상을 설명할 수 있나요?
답변1
에서배쉬 FAQ E10:
E10) 왜 'cd //'는 $PWD를 '//'로 남겨두나요?
POSIX.2는 'cd' 설명에서 다음과 같이 말합니다.삼현재 작업 디렉토리를 정규화할 때 하나 이상의 슬래시가 단일 슬래시로 바뀔 수 있습니다.
이는 역사적 호환성을 위한 것이라고 생각됩니다. 특정 버전의 Unix와 초기 네트워크 파일 시스템에서는 //hostname/path 형식의 경로를 사용하여 'hostname' 서버의 'path'에 액세스했습니다.
답변2
"버그가 아니라 기능이에요!"
여전히 동일한 루트 디렉터리에 있습니다. 나는 이것의 기원을 모르지만 절대 경로에 대한 문자열을 작성하는 것과 관련이 있을 수 있다고 의심합니다. 다른 사람이 확실히 알고 있다면 파이프를 연결하십시오.
답변3
사용한 도구에서는 여러 개의 슬래시가 무시되며 항상 동일한 루트 폴더에 도달하게 됩니다.
답변4
여러 슬래시는 경로 이름 확인을 위해 단일 슬래시로 처리됩니다.
쉘 프롬프트에 표시되는 것은 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 "//"의 의미는 표준에 의해 정의되지 않은 상태로 남아 있지만 "///" 및 그 이상의 슬래시는 "/"와 동일합니다.