단방향 심볼릭 링크를 만들고 싶습니다. 즉, 이를 사용하여 대상 디렉토리로 이동할 수 있지만 돌아갈 수는 없습니다.
D
두 개의 하위 디렉토리 S1
와 가 있는 디렉토리가 있다고 가정합니다 S2
. (예를 들어 ) 에 대한 S1
링크를 만들고 싶습니다 . 그렇다면 가고 싶지만 가지 않는다 .S2
ls2 -> ../S2/
cd ls2
cd ..
D
S1
가능합니까?
답변1
모든 심볼릭 링크는 단방향입니다. 커널에 관한 /D/S1
한 일단 들어가서 실행하면 chdir("ls2")
에 들어가게 되므로 를 /D/S2
실행하면 chdir("..")
결국에는 에 들어가게 됩니다 /D
.
쉘에서 이 작업을 수행하면
cd /D/S1
cd ls2
cd ..
/D/S1
그 이유는 쉘이 현재 디렉토리 자체를 추적하고 기호 링크를 기억하기 때문입니다 .
링크별로 이 셸 동작을 비활성화할 수는 없지만 명령을 실행할 때는 비활성화할 수 있습니다 cd
. 를 실행한 후 cd ls2
쉘은 현재 디렉토리를 다음과 같이 기억합니다 /D/S1/ls2
.
$ pwd
/D/S1
$ cd ls2
$ pwd
/D/S1/ls2
$ cd ..
$ pwd
/D/S1
쉘이 기호 링크 인식 현재 디렉토리 추적을 잊도록 지시하려면 이 명령에도 하나의 -P
옵션이 있습니다 .cd
pwd
-P
$ pwd
/D/S1
$ cd ls2
$ pwd
/D/S1/ls2
$ pwd -P
/D/S2
$ cd -P ..
$ pwd
/D
심볼릭 링크로 변경할 때 논리적 추적을 잊어버릴 수도 있습니다.
$ pwd
/D/S1
$ cd -P ls2
$ pwd
/D/S2
$ cd ..
$ pwd
/D