작동하지 않는 제품의 경우 ls -l
결과를 보면 다음과 같은 결과가 나타납니다.
[sparticvs@sparta test]$ ls -l build/
total 0
lrwxrwxrwx. 1 sparticvs sparticvs 6 Dec 17 16:08 client -> client
이제 무슨 일이 일어나고 있는지 이해합니다. 호출 한 명령을 살펴 보자.
ln -s client build/client
매뉴얼 페이지에 따르면이 형식에 대해 두 가지 가능한 일치 항목이 있습니다
SYNOPSIS
ln [OPTION]... [-T] TARGET LINK_NAME (1st form)
ln [OPTION]... TARGET... DIRECTORY (3rd form)
첫 번째 형식부터 일치합니다. 이제 "대상 이름"또는 client
귀하의 경우 (완전한 ln
매뉴얼 에 따라 ) 임의의 문자열이 될 수 있습니다 . 그들은 지금 당장 무언가를 해결할 필요는 없지만 장래에 무언가를 해결할 수 있습니다. 호출로 작성하는 것은 "매달린 심볼릭 링크"이며 시스템은이를 작성하지 못하게합니다.
이제 두 번째 호출 ln -s ../client build/client
은 "상대적 링크"라고합니다 (자신의 게시물에서 언급 한대로). 두 번째 유형이 있으며이를 수행하여 호출되는 "절대 심볼릭 링크"입니다 ln -s /home/user/client build/client
.
이것은 버그 가 아닙니다 . 매뉴얼에 따르면 :
현재 디렉토리와 다른 위치에 상대적인 심볼릭 링크를 만들 때 심볼릭 링크의 해상도는 현재 디렉토리와 동일한 문자열의 해상도와 다릅니다. 따라서 많은 사용자가 먼저 상대 symlink가 작성 될 위치로 디렉토리를 변경하는 것을 선호하므로 탭 완성 또는 기타 파일 해상도가 symlink에 배치 될 대상과 동일한 대상을 찾을 수 있습니다.
-부터 info coreutils 'ln invocation'
그것은 당신이 말했다 해야 대상에 상대 또는 절대 경로 중 하나를 사용하십시오.