터미널에서 작업하던 중 cd
루트( /
)를 입력하는 동안 철자가 틀렸습니다. 실수로 다음을 입력하여 //
터미널에 접속했습니다.
root@weblocalhost://#
을 입력하면 pwd
응답을 받지만 //
입력하면 디렉토리 ls -s
에 있는 것과 동일한 목록이 표시됩니다 /
.
2개 이상을 입력하면 다음과 같은 결과가 ///
나타납니다.
root@weblocalhost:/#
2를 제외하고 항상 1입니다 /
. 차이점이 있으며 무엇을 //
위한 것입니까?
답변1
/
는 다음과 같습니다//
에서POSIX 사양(강조 추가):
3.267 경로명
파일을 식별하는 데 사용되는 문자열입니다. POSIX.1-2008의 맥락에서 경로 이름은 종료 널 바이트를 포함하여 {PATH_MAX} 바이트로 제한될 수 있습니다. 선택적 시작 문자가 있고
<slash>
그 뒤에는<slash>
문자로 구분된 0개 이상의 파일 이름이 옵니다. 경로 이름에는 선택적으로 하나 이상의 후행<slash>
문자가 포함될 수 있습니다.정확히 두 개의 선행 문자가 있는 경우를 제외하고 연속된 여러<slash>
문자는 하나와 동일한 것으로 간주됩니다 .<slash>
<slash>
그리고:
4.12 경로명 결정
...
단일로 구성된 경로 이름은<slash>
프로세스의 루트 디렉터리로 확인됩니다. null 경로 이름은 성공적으로 해결되지 않습니다.경로 이름이 두 개의 연속 문자로 시작하는 경우 두 개 이상의 선행 문자가 단일 문자로 처리 되더라도<slash>
선행 문자 뒤의 첫 번째 구성 요소는 구현에서 정의된 방식으로 해석될 수 있습니다 .<slash>
<slash>
<slash>
예외(cygwin 및 디렉토리)에 대한 자세한 설명은 다음을 참조하세요.Linux는 여러 연속 경로 구분 기호(/home////username///file)를 어떻게 처리합니까?
답변2
디렉토리에 슬래시를 여러 개 추가해도 아무 것도 변경되지 않습니다. 예를 들어 다음 세 가지 명령은 모두 동일합니다.
cd /home
cd /home/
cd /home//
이 중 하나가 끝나면 현재 작업 디렉토리가 /home으로 설정됩니다( 확인 pwd
).
나추측하다프롬프트가 다음과 같이 구성되어 있는지 확인하세요.뭔가 현명한 일을 해라그리고 당신은 예상치 못한 행동에 직면했습니다. 당신은 무엇을 얻을 때 echo $PS1
?
확인하다unix.stackexchange.com에 대한 이 댓글그것을 설명할 수 있습니다.