디렉토리를 이렇게 약간 설정했습니다.
~/code
~/code/src
~/code/build -> /path/to/somewhere/else
마지막 것은 심볼릭 링크입니다.
내가 이렇게 하면
cd ~/code/build
ls ..
그런 다음 에 대한 목록을 얻었 /path/to/somewhere
지만기타 비고그리고 내 자신의 경험에 따르면 목록을 볼 것으로 예상했습니다 ~/code
. 이전에는 이것이 반대 방향으로 작동했다고 맹세합니다.
저는 우분투에서 zsh와 bash를 사용하고 있습니다. 이에 대한 설정이 있습니까? 아니면 POSIX 등에 깊이 뿌리박혀 있습니까?
답변1
의 문제가 아닙니다 ls
. 이것이 심볼릭 링크가 작동하는 방식입니다. 그러면 ..
현재 디렉토리의 상위 디렉토리로 이동하게 되며, 디렉토리는 심볼릭 링크를 통해 해당 디렉토리에 접근했는지 알 수 없습니다. 이 동작을 방지하려면 쉘이 개입해야 합니다. 쉘 내장의 경우 단지 호출하는 것이 아니라 전체 디렉토리 경로를 기억하고 원하는 것을 파악하려고 시도하는 cd
특수 처리가 있습니다 . 그러나 은 내장되어 있지 않습니다. 기대한 결과를 얻으려면 쉘을 전달하기 전에 쉘을 다른 경로로 변경해야 합니다 . 옵션이 도움이 됩니다.chdir
ls
..
ls
zsh
CHASE_DOTS
일반적으로 디렉토리에 대한 심볼릭 링크는 더러운 사업입니다. 중요하고 반영구적인 응용프로그램의 경우에는 mount --bind
.
답변2
질문에 태그를 달았으므로 zsh
우리가 이 쉘에 대해 이야기하고 있다고 가정합니다.
아마도 oh-my-zsh
변수 CHASE_LINKS
및/또는 CHASE_DOTS
. 해당 실행을 확인 setopt | grep -i chase
하고 나열되어 있는지 확인합니다. 그렇다면 설정을 해제하세요.
unsetopt CHASE_DOTS
unsetopt CHASE_LINKS