GNU bug report logs -
#19051
rm symboliclink/ # "Is a directory"
Previous Next
Full log
View this message in rfc822 format
thanks for your time and comments folks!
On Fri, Nov 14, 2014 at 6:47 AM, Eric Blake <eblake <at> redhat.com> wrote:
> On 11/14/2014 06:15 AM, Eric Blake wrote:
>
>>> Confused me too when I encountered it first, but tt's required by POSIX:
>>> http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap04.html#tag_04_11
>>
>> No, actually, POSIX requires that it (attempt to) remove the DIRECTORY,
>> not the symlink. Linux is intentionally in violation of POSIX on this
>> front.
>>
>> Try this on Solaris:
>>
>> $ mkdir a
>> $ ln -s a b
>> $ rm b/
>> $ ls -d ?
>> b
>
> Uggh, serves me right for typing without testing. I'm mixing up
> rename(), unlink(), and rmdir() semantics. Basically,
> unlink("anything/") is required by POSIX to fail because the trailing /
> means that the only thing to be removed is a directory, but directories
> can only be removed by rmdir(), not unlink().
>
> Still, my point remains when you use 'rm -r b/': on Linux, it fails
> (cannot remove 'b/': Not a directory), on Solaris it succeeds at
> removing 'a' and leaving 'b' dangling.
>
> The fact that Linux intentionally violates POSIX on some of the corner
> cases related to symlinks to directories makes it harder to definitively
> state what coreutils should do.
>
> --
> Eric Blake eblake redhat com +1-919-301-3266
> Libvirt virtualization library http://libvirt.org
>
This bug report was last modified 6 years and 285 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.