ln -sf가 자동으로 실패하는 이유는 무엇입니까?

ln -sf가 자동으로 실패하는 이유는 무엇입니까?

ln -sf source_file target_filesource_file이 존재하지 않아도 성공합니다.

ln -f source_file target_file반면에 예상대로 실패했습니다.

첫 번째 경우 오류가 발생하도록 조정하는 방법아니요먼저 파일이 존재하는지 명시적으로 테스트합니다(즉, 존재하지 않습니다 [[ -e source_file ]] && ln -sf source_file target_file).

답변1

ln매뉴얼 페이지 에서 :

하드 링크를 생성할 때 각 TARGET이 존재해야 합니다.

거기에는 심볼릭 링크에 대한 언급이 없습니다. 실제로 이 진술은 심볼릭 링크의 경우에는 해당되지 않음을 암시하는 것 같습니다.

귀하의 질문에 대한 의견에서 말했듯이 존재하지 않는 소스에 대한 심볼릭 링크를 생성하면 끊어진 링크가 생성됩니다.

$ ln -sfv blah blabla
'blabla' -> 'blah'
$ file blabla
blabla: broken symbolic link to 'blah'

현재 ln로서는 오류에 대해 불평할 이유가 없습니다. 심볼릭 링크를 요청하면 승인됩니다. 앨리어싱에 대한 두려움 때문에 ln소스 파일이 존재하는지 명시적으로 확인하지 않고 원하는 작업을 수행할 수 있는 방법을 찾지 못했습니다.

관련 정보