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

おすすめ記事