Many years ago I posted a shell script to Usenet in which I prepended a
line with 'exec', in an attempt to avoid having a shell process hanging
around doing a wait().  David Korn himself (of Korn shell fame)
responded saying this was not necessary, as the shell would do exec()
anyway.

I check with trace() on a Sun and he seemed to be right.  This was for
the classic Bourne shell many years ago.

But I just checked /bin/sh on 3.1-RELEASE with ktrace and the above does
not seem to be true.  I get drastically different traces for

   #! /bin/sh
   exec /bin/pwd

and

   #! /bin/sh
   /bin/pwd

Rahul

> Date:  Fri, 19 Feb 99 11:43:59 EST
> From:  Mikhail Teterin <m...@misha.cisco.com>
> To:    curr...@freebsd.org
> Message-Id: <199902191644.laa08...@misha.cisco.com>
> Subject: sh(1) -- exec vs. fork
> Reply-To: m...@aldan.algebra.com

> I just finished going through a couple of crontabs prepending the
> command-lines with ``exec'', when it hit me.
> 
> Can shell itself recognize, there will be no more commands and just
> proceed to exec without forking? What would this break?
...


To Unsubscribe: send mail to majord...@freebsd.org
with "unsubscribe freebsd-current" in the body of the message

Reply via email to