Bourne | Ash |  #!  | find | ARG_MAX | Shells | portability | permissions | UUOC | ancient | - | ../Various | HOME
"$@" | echo/printf | set -e | test | tty defs | tty chars | $() vs ) | IFS | using siginfo | nanosleep | line charset | locale

I am glad to have found the following in the CSRG Archive CD-ROMs.

The following was released under the licenses of BSD and Caldera.

Here are extracts from the "4.1.snap" snapshot, /usr/man/man2/exec.2 (4/1/81):

System Calls                                              EXEC(2)

     execl, execv, execle, execve, execlp, execvp,  exec,  exece,
     environ - execute a file

     execl(name, arg0, arg1, ..., argn, 0)
     char *name, *arg0, *arg1, ..., *argn;

     execv(name, argv)
     char *name, *argv[];

     execle(name, arg0, arg1, ..., argn, 0, envp)
     char *name, *arg0, *arg1, ..., *argn, *envp[];

     execve(name, argv, envp)
     char *name, *argv[], *envp[];

     extern char **environ;

     Exec in all its forms overlays the calling process with  the
     named  file,  then  transfers to the entry point of the core
     image of the file.  There can be no return from a successful
     exec; the calling core image is lost.


     To aid execution of command files of  various  programs,  if
     the  first  two  characters  of the executable file are '#!'
     then exec attempts to read a pathname  from  the  executable
     file  and  use  that  program  as  the command files command
     interpreter.  For  example,  the  following   command   file
     sequence would be used to begin a csh script:
          #! /bin/csh
          # This shell script computes the checksum on /dev/foobar
     A single parameter may be passed the interpreter,  specified
     after the name of the interpreter; its length and the length
     of the name of the interpreter combined must not  exceed  32
     characters.  The space (or tab) following the '#!' is manda-
     tory, and the  pathname  must  be  explicit  (no  paths  are