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