상대 플래그와 강제 플래그를 사용하여 심볼릭 링크를 생성할 때 일관되지 않은 동작

상대 플래그와 강제 플래그를 사용하여 심볼릭 링크를 생성할 때 일관되지 않은 동작

ln상대 값과 강제 플래그를 설정하여 심볼릭 링크를 만드는 데 문제가 있습니다.

시나리오는 다음과 같습니다.

$ tree
.
├── folder1
│   └── file
└── folder2

나는 링크를 만든다:

$ ln -sfr folder1/file folder2
$ tree
.
├── folder1
│   └── file
└── folder2
    └── file -> ../folder1/file

이것이 내가 원하는거야. 그러나 명령을 다시 실행하면 링크가 이제 자신을 가리키는 이유를 이해할 수 없습니다.

$ ln -sfr folder1/file folder2
$ tree
.
├── folder1
│   └── file
└── folder2
    └── file -> file

이 명령을 세 번째 실행하면 오류를 수정할 수 있습니다.

$ ln -sfr folder1/file folder2
$ tree
.
├── folder1
│   └── file
└── folder2
    └── file -> ../folder1/file

명령을 여러 번 다시 실행하면 두 상태 간에 전환됩니다. 왜 그런지 정말 알고 싶습니다. 설명서에 따르면 이는 문제가 되지 않습니다.

사용된 버전 ln(Ubuntu 14.10과 함께 제공):

$ ln --version
ln (GNU coreutils) 8.21
[...]

답변1

이는 coreutils 버전 8.16~8.21에서 발생하는 버그입니다. 8.22에서 수정되었습니다. 버전 8.22의 릴리스 노트:

ln --relative는 이제 기존 기호 링크를 올바르게 업데이트합니다. 이전에는 기존 링크의 역참조 경로를 기반으로 한 상대 링크였습니다. [이 버그는 coreutils-8.16에 --relative가 추가되었을 때 도입되었습니다. ]

https://savannah.gnu.org/forum/forum.php?forum_id=7815

관련 정보