[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: -e does not take effects in subshell

From: Linda Walsh
Subject: Re: -e does not take effects in subshell
Date: Tue, 18 Aug 2015 13:49:53 -0700
User-agent: Thunderbird

Eric Blake wrote:
Like it or not, it is the historical behavior standardized by POSIX.
This is not true.  POSIX no longer documents historical behavior,
but now dictates new, historically-incompatible behaviors for a
variety of features in a variety of products (not just BASH).

As such, since the original mission statement of POSIX was to be
*descriptive* of what was (so a compatible standard could be provided),
and that is NOT what the new POSIX (post 2001-2003) has as a mission
statement, I assert the new "POSIX" is simply a new organization that
got the rights to use the name but use it as a "club" to force products to their new, dumbed-down and maladaptive behaviors.

Ex: rmx -fr (alias to rm --one-file-system -fr, since rm lacks the
-x switch like 'find, cp, mv, et al.) no longer works to clean
out a directory && stay on *one* file system.

Now rm will delete things on any number of file systems, as long
as they correspond to a cmdline argument.  Many people said to use
rm -xfr * to delete contents... but each object in 'rm' can be
on a different file system.  Worse "rm -xfr **".

The workaround -- to use non-posix options of 'find' (or have find
call 'rm' for each qualified object.
Please don't spread the lies that the *current* POSIX specs only
reflect historical behavior because it is not true.

is NOT intuitive, and our advice is "DON'T USE set -e - IT WON'T DO WHAT
YOU WANT".  We can't change the behavior, because it would break scripts
that rely on the POSIX-specified behavior.
I used the old behavior for over 10 years in various SH-compat shells, and it *WAS* useful. POSIX changed it to be unuseful.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]