ln -sf source_file target_file
source_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
ソースファイルが存在するかどうかを明示的に確認せずに、目的の操作を実行する方法が見つかりませんでした。