Subject: Re: make -j and failure modes
To: Christos Zoulas <christos@zoulas.com>
From: Greywolf <greywolf@starwolf.com>
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.
Really?
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:
Nope!
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
yyy
?? 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).
--*greywolf;
--
Contrary to popular belief, Unix is user friendly.
It just happens to be selective about who it makes friends with.
-Kyle Hearn <kyle@intex.net>