Dave Horsfall <dave(a)horsfall.org> wrote:
On Sat, 10 Sep 2016, arnold(a)skeeve.com wrote:
I think that the way the shell
"recognized" scripts was by having exec
fail, otherwise how would it know? I think we'll have to go grubbing in
the source archives to be sure.
Correct; if the exec failed then the invoking shell assumed that it was a
shell script, and spawned a shell to run it.
I think this happened in the "spawned" shell - so the exec would fail and
then this child shell would just run the script.
if ((pid = fork()) != 0)
wait for pid
else {
/* in the child */
exec /path/to/program
if (errno == ENOEXEC) /* or whatever it is, I don't remember */
interpret the script directly
}
Arnold