ln: posixly confused
Andriy Gapon
avg at icyb.net.ua
Tue Mar 3 10:45:53 PST 2009
on 03/03/2009 20:32 Nate Eldredge said the following:
> On Tue, 3 Mar 2009, Andriy Gapon wrote:
>
>>
>> Test case.
>> Preparation:
>> $ mkdir linktest
>> $ cd linktest
>> $ mkdir some_dir
>> $ mkdir other_dir
>> The test:
>> $ ln -s some_dir the_link
>> $ ln -s -f other_dir the_link
>>
>> Expected: the_link points to other_dir.
>> Actual result: some_dir contains symlink other_dir -> other_dir.
>>
>>> From ln(1):
>> SYNOPSIS
>> ln [-s [-F]] [-f | -iw] [-hnv] source_file [target_file]
>> ln [-s [-F]] [-f | -iw] [-hnv] source_file ... target_dir
>>
>> I thought that only true directory would trigger the second form.
>> I thought that the second argument being a symlink (to a file or to a
>> directory)
>> should trigger the first form.
>>
>> I also read this:
>> http://www.opengroup.org/onlinepubs/009695399/utilities/ln.html
>>
>> I think that the text there (and in ln(1)) implies what I expected,
>> but this is
>> not spelled out clearly.
>
> FWIW, Linux and Solaris have the same behavior as FreeBSD.
>
> The standard says the second form is triggered if the second argument
> "names an existing directory". An informative note in the symlink()
> specification at
> http://www.opengroup.org/onlinepubs/009695399/functions/symlink.html
> says "a symbolic link allows a file to have multiple logical names".
> Therefore, I think it's a fair interpretation to say that a symbolic
> link to an existing directory "names" it.
Thank you for the info!
--
Andriy Gapon
More information about the freebsd-hackers
mailing list