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가 추가되었을 때 도입되었습니다. ]