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


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.