[Bug 254489] ln(1) should apply -F to the file being created, not target_file (was command 'ln -sfF' behaves unreasonably: it deletes the target directory and then fails)

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Mon Mar 22 23:34:57 UTC 2021


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254489

--- Comment #4 from Christos Margiolis <christos at christosmarg.xyz> ---
> The target of the link in this case is a file .x/ls and it doesn't exist.

It seems that the -F option interprets `.x/` literally, so it tries to create a
file named `.x/` which obviously doesn't work. You'd have to write the command
as `ln -sfF /bin/ls .x/ls` in order for it work the way you want it to.

> When the user specifies "-F" he means "target of the link" (the object
> being created). IMO a correct fix here is to fix ln(1) to apply "-F" to
> the "target of the link", and to correct the manpage accordingly.

I think the reason behind the fact that -F doesn't "fill in" the target's name 
(i.e `.x/` to `.x/ls`) is to prevent commands such as `ln -sfF foo .` which
would mean that the current working directory has to be deleted if it's empty.

It makes sense that -F doesn't have the same behavior as the other options
since it involves deleting stuff and the command I mentioned above is a common
command and very easy way to mess things up, especially if -F is used inside a
script.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list