#! is not next to demigodliness

dmr at research.UUCP dmr at research.UUCP
Tue Mar 13 16:00:56 AEST 1984


The major reason for installing the #! magic-number mechanism in the kernel
is to unify all the different ways of executing a program written
in various languages.  Certain magic numbers have always told the kernel
about details in the layout of native machine code; it seemed natural
to generalize a bit to allow specification of an interpreter.  Thus, if
the facility is used, neither sh nor csh needs to resort to heuristics to
determine which shell scripts should be executed by whom; the script itself
announces its interpreter (yes, it can be Pascal too).  If you want to execute
a program, you can do it with "exec" and not worry about whether it is a shell
script and if so, which shell.

A secondary gain is the possibility of set-uid scripts.  As has been pointed
out, there are perils aplenty.  $PATH is the most obvious; in the
Bourne shell, games with $IFS are also to be guarded against.

I am not now, nor have I ever been, a member of the demigodic party.

		Dennis Ritchie



More information about the Comp.unix.wizards mailing list