Por que o ln -sf falha silenciosamente?

2

ln -sf source_file target_file é bem-sucedido mesmo quando source_file não existe.

Por outro lado,

ln -f source_file target_file falha, conforme esperado.

Como pode ser ajustado para dar erro no primeiro caso sem primeiro teste para a existência do arquivo explicitamente (ou seja, não [[ -e source_file ]] && ln -sf source_file target_file )

    
por akurtser 12.07.2013 / 23:21

1 resposta

6

Na página ln man:

When creating hard links, each TARGET must exist.

Nenhuma menção de links simbólicos lá; na verdade, essa afirmação parece implicar que esse não é o caso dos links simbólicos.

Como eu disse no meu comentário sobre a sua pergunta, ao criar um link simbólico para uma fonte inexistente, um link quebrado é criado:

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

No que diz respeito a ln , não há motivo para o erro de chorar: você solicitou um link simbólico e o obrigou. Com o aliasing ln , não vejo como fazer o que você deseja sem verificar explicitamente a existência do arquivo de origem.

    
por 12.07.2013 / 23:29

Tags