내 시스템은 macOS 13.2.1이고 쉘은 oh-my-zsh입니다(bash에서도 동일한 동작). cd
명령에서 이상한 동작을 발견했습니다 . 현재 디렉터리를 잘못된 디렉터리로 변경합니다. 올바른 경로에 디렉터리가 없기 때문에 이는 소프트 링크로 인해 발생하지 않습니다.
!w /Library/TeX/texbin ........................................................................................................... 14:56:24
> cd ../../texmf-dist
!w /usr/local/texlive/2021/texmf-dist ............................................................................................ 14:56:40
> cd -
/Library/TeX/texbin
!w /Library/TeX/texbin ........................................................................................................... 14:56:42
> cd ../../
!w /Library ...................................................................................................................... 14:56:51
> cd texmf-dist
cd: no such file or directory: texmf-dist
답변1
모호함을 유발하는 /Library/TeX
심볼릭 링크를 언급하고 있습니다 ./usr/local/texlive/2021/universal-darwin/
/Library/TeX/texbin
(실제로 ) 들어가서 /usr/local/texlive/2021/universal-darwin/texbin
실행 하면 cd ../..
쉘은 링크가 존재하는지 확인합니다 /Library/texmf-dist
. 즉, 링크에 액세스하는 데 사용한 경로를 기억하고 각 경로 요소를 제거하여 ..
실행된 단계 링크를 효과적으로 실행 취소합니다. 결국 에 들어가고 존재 /Library
하지 /Library/texmf-dist
않으므로 cd
결국 작동하지 않습니다.
마찬가지로, cd ../../texmf-dist
가려고 시도 /Library/texmf-dist
하지만 존재하지 않습니다. 하지만 여기서는 심볼릭 링크를 기억할 필요 없이 경로가 실제 위치에서 적합한지 확인합니다. /usr/local/texlive/2021/texmf-dist
쉘이 심볼릭 링크를 통해 경로를 잊어버려야 하므로 경로가 어떻게 완전히 변경되는지 확인하세요 .
돌아가서 /Library/TeX/texbin
실행 하면 심볼릭 링크를 다시 잊어버리고 "물리적" 경로를 사용하게 되며 다시 잘 작동하게 될 것 cd -P ../..
입니다 ./usr/local/texlive/2021
cd texmf-dist
구조는 다음과 같습니다. 차이점은 ..
위로 올라갈 때 선택한 경로 에서 비롯됩니다 universal-darwin
(다른 디렉토리는 심볼릭 링크가 아니라고 가정합니다).
/Library -> Tex - - - -(symlink)- - +
v
/usr -> local -> texlive -> 2021 -> universal-darwin -> texbin
|
+---> texfmt-dist
쉘이 사용자가 사용하는 심볼릭 링크를 기억하는 방식은 유용성 기능입니다. 이는 많은 경우 더 나은 이름으로 심볼릭 링크를 생성하고 한 시간 동안 검색할 수 있는 경우 무언가가 실제로 어디에 있는지 기억할 필요가 없음을 의미합니다. 다른 것 ~/thingy
보다 /net/fileserver1/disk02/dir/thingy
기억하기 쉽습니다 .
그러나 이는 디렉토리 트리가 그렇지 않음을 의미합니다.나무더 이상 "위"가 모호해집니다.
따라서 심볼릭 링크 대상이 "초과"되면 충돌이 발생할 수 있습니다. 특히, 쉘에서 시작된 프로그램은 쉘이 심볼릭 링크의 내용을 기억한다는 사실을 알지 못하며 항상 "물리적" 상위 디렉토리를 사용합니다. 예를 들어 귀하의 경우 /Library/TeX
심볼릭 링크 로 ls ..
실행하면 cd ..; ls
.