입력하여 리눅스에서 상위 디렉토리로 돌아가고 싶을 때는 cd ..
오타를 썼다 cd //
. 놀랍게도 오류는보고되지 않았습니다. 더 많은 프롬프트가됩니다 username@hostname://$
. ls
내가 현재 루트 디렉토리에 있음을 나타냅니다.
이것은 쉘의 버그입니까? 기능인 경우 //
별칭은 /
? 내 쉘은 GNU bash, 버전 4.1.5 (1)-릴리스 (i686-linux-gnu)입니다.
감사와 안부.
답변
어느 쪽이든 고려할 수 있습니다.
Linux에서는 //
아무 의미도 없습니다 . 시작을 포함하여 경로의 어느 곳에서나 연속 된 여러 개의 슬래시가 하나로 축소됩니다 . 실행 하면 알 수 있듯이 디렉토리를 변경하여를 //
넣으십시오 . 마찬가지로 으로 축소됩니다 ./
readlink /proc/self/cwd
/usr//local///bin
/usr/local/bin
그러나 Cygwin 또는 이전 Apollo Domain / OS와 같은 다른 유닉스 계열 시스템 은 네트워크 경로에 //
접두사 를 사용합니다 (예 🙂 //fileserver/path/to/data
. POSIX에서도 가능합니다.
여러 가지 이유로, bash 쉘은 OS 제공 추적 외에도 현재 디렉토리를 자체적으로 추적하며 초기 디렉토리 //
가 무너지는 것을 방지하고 그러한 시스템과의 호환성을 유지 하는 코드를 가지고 있습니다. “기능”은 bash 가 현재 디렉토리를보다 직관적으로 추적 cd
하는 것 입니다. 예를 들어, 심볼릭 링크에 들어가면 bash 는 커널이 다르게 생각하더라도 예상 경로를 보여줍니다. “버그”는 bash 가 //
그것을 사용하지 않는 시스템에서도 가능 하다.
답변
POSIX 경로 이름 정의에서 :
경로 이름은 선택적으로 하나 이상의 후행 슬래시를 포함 할 수 있습니다. 여러 개의 연속 슬래시는 하나의 슬래시와 동일한 것으로 간주됩니다.
그리고 Pathname Resolution 4.11 장 에서 아래의 주석에서 언급 한 바와 같이 더 정확하게 :
두 개의 연속 슬래시로 시작하는 경로 이름은 구현 정의 방식으로 해석 될 수 있지만 두 개 이상의 선행 슬래시는 단일 슬래시로 취급됩니다.
답변
일종의 기능입니다. 쉘 스크립트를 사용 find
하고을 사용하는 경우 예를 들어 모든 경로 앞에 ./ 접두사가 붙습니다. 그런 다음 실제 경로에 고정하면`/my/path/./appended/path가되고 / my / path / appended / path로 해석됩니다. 따라서 실수하지 않으면 // get은 /./로 해석되므로 /로 해석됩니다. / home / user //에 갔을 때 / home / user /에 들어갔을 때도 마찬가지입니다.
답변
“bug”를 표시하라는 메시지가 표시됩니다.
“/”, “//”, “//////////////////////”경로는 “/”와 같은 의미를 갖습니다. 유닉스 경로에서 원하는 곳에 많은 “/”를 추가 할 수 있지만 그 의미는 바뀌지 않습니다.
“버그”는 프롬프트에서 실제 “pwd”가 아닌 마지막 유효한 유형의 경로를 사용하여 표시한다는 사실과 관련이 있습니다.
어쨌든 재미있다;)
답변
그것의 특징이며 모든 배수는 하나의 단일 /
끝에 예제와 같은 경로가있는 변수가있는 경우 유용합니다. 따라서 CD에 오류가 발생하지 않으며 작업 공간 변수를 변경할 필요가 없습니다.
MY_WORKSPACE = / home / your_username / workspace / MY_NEW_PROJECT = $ MY_WORKSPACE / my_proj / cd $ MY_NEW_PROJECT
프로젝트 변수의 전체 내용은
/ home / your_username / workspace // my_proj /