나는 루팅하는 동안 철자가 틀렸을 때 터미널에서 일하고있었습니다 cd
( /
). 실수로 입력 //
하고 터미널에 도착했습니다.
root@weblocalhost://#
내가 입력 pwd
하면 응답을 얻지 //
만 입력하면 디렉토리 ls -s
와 동일한 목록이 표시됩니다 /
.
2 이상을 입력하면 다음과 같은 결과 ///
가 나타납니다.
root@weblocalhost:/#
2를 /
제외하고 항상 1 입니다. 차이가 있으며 무엇 //
입니까?
답변
/
에 해당 //
에서 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)를 어떻게 처리합니까?
답변
디렉토리에 슬래시를 여러 개 추가해도 아무 것도 변경되지 않습니다.
예를 들어이 세 명령은 모두 동일합니다.
cd /home
cd /home/
cd /home//
이 중 현재 작업 디렉토리가 / home (로 확인 pwd
)으로 설정되어 있습니다.
나는 추측 당신이하도록 구성하여 프롬프트 가지고 재치있게 일 처리를 하고 예상치 못한 행동에 달려있다. 당신은 무엇을 얻 echo $PS1
습니까?
설명 할 수있는 https://unix.stackexchange.com/ 에 대한 의견으로 연결 하십시오.