At 10:13 PM 12/4/2005, Dave Hylands wrote:
HI Tommy,
On 12/4/05, Tommy Nordgren <[EMAIL PROTECTED]> wrote:
> Splitting into two lines won't work, since that will change how the
> command works
Doh.
> if the directory exists.
> Instead use:
> cd bogus-this-is-not-a-real-directory && ls -l
It was on the tip of my tongue to suggest that, but somehow I thought
it would complicate things - Sigh,
The full story is a little more complicated than this, however.
Although the OP didn't mention a platform it's presumably Linux,
because for complex historical reasons[*] the real Bourne shell
treats cd differently from other commands; it NEVER continues past a
failed cd whether you use "&&" or ";". See below, on Solaris:
% /bin/sh -c "false; date"
Sun Dec 4 22:38:21 EST 2005
% /bin/sh -c "cd /fgfgfgfg; date"
/bin/sh: /fgfgfgfg: does not exist
So the situation the OP describes is impossible on a traditional Unix
system and the provided solution wouldn't help anyway.
I don't have access to a Linux machine at the moment. However, when I
take the same Makefile and add SHELL=/bin/bash, both problem and
solution are as described. Bash is supposed to behave in a
Bourne-compatible manner when invoked as /bin/sh, so as I see it
either (a) the OP has set SHELL=/bin/bash in the makefile and not
told us or (b) bash is incompatible with Bourne in this way.
-David Boyce
[*] "Complex historical reasons" means that I read about why the
shell treats cd specially once but don't remember the details. I
believe the basic idea was to protect against the sort of carnage
that can be caused by a typo in "cd /tmp; rm -rf *"
_______________________________________________
Help-make mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-make