단방향 심볼릭 링크를 만들 수 있나요?

단방향 심볼릭 링크를 만들 수 있나요?

단방향 심볼릭 링크를 만들고 싶습니다. 즉, 이를 사용하여 대상 디렉토리로 이동할 수 있지만 돌아갈 수는 없습니다.

D두 개의 하위 디렉토리 S1와 가 있는 디렉토리가 있다고 가정합니다 S2. (예를 들어 ) 에 대한 S1링크를 만들고 싶습니다 . 그렇다면 가고 싶지만 가지 않는다 .S2ls2 -> ../S2/cd ls2cd ..DS1

가능합니까?

답변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옵션이 있습니다 .cdpwd-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

관련 정보