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.