ls .. 심볼릭 링크에서는 제대로 작동하지 않습니다

ls .. 심볼릭 링크에서는 제대로 작동하지 않습니다

디렉토리를 이렇게 약간 설정했습니다.

~/code
~/code/src
~/code/build -> /path/to/somewhere/else

마지막 것은 심볼릭 링크입니다.

내가 이렇게 하면

cd ~/code/build
ls ..

그런 다음 에 대한 목록을 얻었 /path/to/somewhere지만기타 비고그리고 내 자신의 경험에 따르면 목록을 볼 것으로 예상했습니다 ~/code. 이전에는 이것이 반대 방향으로 작동했다고 맹세합니다.

저는 우분투에서 zsh와 bash를 사용하고 있습니다. 이에 대한 설정이 있습니까? 아니면 POSIX 등에 깊이 뿌리박혀 있습니까?

답변1

의 문제가 아닙니다 ls. 이것이 심볼릭 링크가 작동하는 방식입니다. 그러면 ..현재 디렉토리의 상위 디렉토리로 이동하게 되며, 디렉토리는 심볼릭 링크를 통해 해당 디렉토리에 접근했는지 알 수 없습니다. 이 동작을 방지하려면 쉘이 개입해야 합니다. 쉘 내장의 경우 단지 호출하는 것이 아니라 전체 디렉토리 경로를 기억하고 원하는 것을 파악하려고 시도하는 cd특수 처리가 있습니다 . 그러나 은 내장되어 있지 않습니다. 기대한 결과를 얻으려면 쉘을 전달하기 전에 쉘을 다른 경로로 변경해야 합니다 . 옵션이 도움이 됩니다.chdirls..lszshCHASE_DOTS

일반적으로 디렉토리에 대한 심볼릭 링크는 더러운 사업입니다. 중요하고 반영구적인 응용프로그램의 경우에는 mount --bind.

답변2

질문에 태그를 달았으므로 zsh우리가 이 쉘에 대해 이야기하고 있다고 가정합니다.

아마도 oh-my-zsh변수 CHASE_LINKS및/또는 CHASE_DOTS. 해당 실행을 확인 setopt | grep -i chase하고 나열되어 있는지 확인합니다. 그렇다면 설정을 해제하세요.

unsetopt CHASE_DOTS
unsetopt CHASE_LINKS

관련 정보