// 경로에서 무엇을 의미합니까?


9

나는 루팅하는 동안 철자가 틀렸을 때 터미널에서 일하고있었습니다 cd( /). 실수로 입력 //하고 터미널에 도착했습니다.

root@weblocalhost://#

내가 입력 pwd하면 응답을 얻지 //만 입력하면 디렉토리 ls -s와 동일한 목록이 표시됩니다 /.

2 이상을 입력하면 다음과 같은 결과 ///가 나타납니다.

root@weblocalhost:/#

2를 /제외하고 항상 1 입니다. 차이가 있으며 무엇 //입니까?

답변:


8

/ 에 해당 //

에서 POSIX의 사양 (강조는 추가) :

경로 이름

파일을 식별하는 데 사용되는 문자열입니다. POSIX.1-2008의 컨텍스트에서 경로 이름은 종료 널 바이트를 포함하여 {PATH_MAX} 바이트로 제한 될 수 있습니다. 선택적인 시작 <slash> 문자와 <slash> 문자로 구분 된 0 개 이상의 파일 이름이 있습니다. 경로 이름은 선택적으로 하나 이상의 후행 <slash>문자를 포함 할 수 있습니다 . 연속 된 여러 <slash>문자는 <slash>정확히 두 개의 선행 <slash>문자를 제외하고는 하나와 동일한 것으로 간주됩니다 .

그리고 :

4.12 경로 이름 확인

...
단일로 구성된 경로 이름 <slash>은 프로세스의 루트 디렉토리로 해석됩니다. 널 경로명은 성공적으로 해결되지 않아야한다. 경로명이 두 개의 연속 <slash>문자로 시작하는 경우 선행 <slash>문자 다음에 오는 첫 번째 구성 요소 는 구현 정의 방식으로 해석 될 수 있지만 두 개 이상의 선행 <slash>문자는 단일 <slash> 문자 로 취급됩니다 .

예외 (cygwin 및 디렉토리)에 대한 자세한 설명은 다음을 참조하십시오. Linux는 여러 개의 연속 경로 구분 기호 (/ home //// username /// file)를 어떻게 처리합니까?


4

디렉토리에 슬래시를 여러 개 추가해도 아무 것도 변경되지 않습니다.

예를 들어이 세 명령은 모두 동일합니다.
cd /home
cd /home/
cd /home//

이 중 현재 작업 디렉토리가 / home (로 확인 pwd)으로 설정되어 있습니다.

나는 추측 당신이하도록 구성하여 프롬프트 가지고 재치있게 일 처리를 하고 예상치 못한 행동에 달려있다. 당신은 무엇을 얻 echo $PS1습니까?

설명 할 수있는 https://unix.stackexchange.com/ 에 대한 의견으로 연결 하십시오.


OSX에서 bash의 PS1은 "\ h : \ W \ u \ $"이며이 이상한 동작도 발생합니다. / 및 /// 및 //// 및 /////는 모두 /로 표시되지만 두 개의 슬래시의 특수한 경우는 두 개의 슬래시로 표시됩니다.
Sparr

우분투 12.10에서 \ u @ \ h : \ w (<b> h </ b> ost에서 <b> h </ b> ost, <b> w </ b> orking dir)를 받았지만 실패했습니다. 문제를 재현하십시오.
Hennes

아니오 // 어떤 경우에도 pwd를 확인할 때 항상 // 얻습니다. 에코 $ PS1의 경우 다음과 같이 표시됩니다. \ [\ e] 0; \ u @ \ h : \ w \ a \] $ {debian_chroot : + ($ debian_chroot)} \ u @ \ h : \ w \ $
Dimitris Theodoridis

PS1을 수동으로 설정했는데 두 개의 슬래시로 재생할 수 없습니다 . 기묘한. 1, 3 또는 4가 아닙니다. 2 만입니다. 나는 이것을 설명하기 위해 상실되었습니다.
Hennes

아마도 unix.stackexchange 의이 의견이 답일 것 입니다 .Windows POSIX compat API는 // remote / ...도 UNC 경로 \\ remote \ ... 형식과 동일하게 취급한다고 생각합니다. – Stephen P Jan 20 '11 at 0:39
Hennes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.