Subject: Re: make -j and failure modes
To: Christos Zoulas <>
From: Greywolf <>
List: tech-userlevel
Date: 12/10/2003 09:00:19
Thus spake Christos Zoulas ("CZ> ") sometime Today...

CZ> Is this a bug? -e does not work on interactive shells.


rivendell 513: sh
$ set -e
$ false
rivendell 514: sh -e
$ false
rivendell 515:

It totally fails, though, on ()'d commands:

rivendell 515: sh -e
$ (exit 0; exit 1)
$ (exit 1)
$ false
rivendell 516:

Perhaps because false is a builtin?

rivendell 516: sh -e
$ /usr/bin/false
rivendell 517:


So it's the semantics of () which are broken and should be fixed.

David Laight suggested that it...
>May even be worth changing make so that it understands cd xxx; yyy

I have two thoughts on this:
1.  Make understands this already.
2.  Are you (David) saying "change make to understand
target:	source
	cd xxx
??  i.e. "cd" actually takes effect over more than one line?

If the latter, may I issue a resounding "NO!"?  There are too many
implementations of make out there which would not do well with that.
I've even *depended* explicitly on the fact that 'cd' does not cross
make line boundaries (don't get technical about it -- you know what
I mean).

Contrary to popular belief, Unix is user friendly.
It just happens to be selective about who it makes friends with.
	-Kyle Hearn  <>