On 11/20/2013 03:19 AM, Eric Blake wrote:
> Yes, the 'rm -rf .' case appears to be a regression in coreutils that is
> contrary to the behavior required by POSIX. That is:
>
> $ mkdir /tmp/foo /tmp/foo/sub
> $ cd /tmp/foo
> $ rm -r .
> rm: cannot remove directory: ‘.’
> $ ls
> sub
>
> appears to be a bug in current coreutils, because it should have
> successfully called rmdir("sub") prior to failing on the attempt to
> rmdir(".").
I disagree: see at the top of:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/rm.html
If either of the files dot or dot-dot are specified as the basename
portion of an operand (that is, the final pathname component) or if
an operand resolves to the root directory, rm shall write a diagnostic
message to standard error and do nothing more with such operands.
Maybe "cannot remove directory" is a bit weak - it's more like
"refusing to remove dot|dot-dot|root directory".
Have a nice day,
Berny