`/../`를 사용하여 디렉토리를 변경하는 것이 왜 효과가 있습니까?


1

디렉토리 변경 :

$ pwd
/usr
$ cd bin && pwd
/usr/bin

와 .., 같은 결과 :

$ pwd
/usr
$ cd bin/../bin && pwd
/usr/bin

그런데 왜? 왜 쉘이 에러를 던지지 않는가?

답변:


3

글쎄 ".."는 예를 들어 "ls -la"로 볼 수있는 디렉토리의 일반 항목 ( ".")이며 상위 디렉토리를 가리 킵니다.

그래서 "cd bin /../ bin"을 분할하면 usr에서 usr / bin으로 이동 한 다음 usr으로 돌아간 다음 usr / bin으로 돌아갑니다. 각 "/"다음에 디렉토리 이동이 수행됩니다.

cd bin /./././../bin/../bin/./을 시도해 볼 수도 있습니다. 경우 :)


쉘은 경로를 / 모든 토큰이 다 소모되거나 오류가 발생할 때까지 각 토큰에 따라 디렉토리를 변경하십시오. 일을 계속하는 것의 영향 ../../../..?
— realguess

정확히 그것은 단지 하나의 토큰을 분할하고 실행합니다. 따라서 ../../../..는 디렉토리 트리에서 4 단계로 뒤로 이동합니다 (물론이 경로가 존재한다는 사실을 감안할 때)
— fede.evol

실제로, 그것은 "정확하게"그런 것이 아닙니다. 대부분의 운영 체제에서 경로 처리를 수행하는 쉘이 아닙니다. 운영 체제 커널입니다. 그리고 루트가 자신의 상위 디렉토리 (경로 구성 요소를 계속 추가 할 수 있는지 여부에 영향을주는)는 운영 체제마다 다른 내용입니다.
— JdeBP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.