On 20 Apr 2017 21:28 -0600, from arnold(a)skeeve.com:
The # was nod
to the # being the first characters of the C program to say
to use the preprocessor; but I've forgotten why the bang was added before
the path. It could have been almost anything.
Perhaps reminiscent of the '!' escape to shell in ed and maybe
some other interactive programs of the time? That's purely a guess
on my part.
How about that # could start a C preprocessor directive, but no C
preprocessor directives begins with `!'? Makes it easy for the C
compiler or preprocessor to check that it isn't being fed a random
script.
--
Michael Kjörling •
https://michael.kjorling.se • michael(a)kjorling.se
“People who think they know everything really annoy
those of us who know we don’t.” (Bjarne Stroustrup)