[TUHS] History of #! interpretation in Unix
cowan at mercury.ccil.org
Tue Jan 18 06:47:18 AEST 2011
Warner Losh scripsit:
> The alternatives are worse.
You're making my point for me.
> On a sysIII system, you had the situation where scripts would be
> executed by whatever your shell. So if you put a script on the system,
> you had to make sure everybody used csh and write it in csh, or you had
> to make sure nobody did and write it in /bin/sh.
> The current situation says that 'you must opt-in' to a different shell,
> which leads to more predictable behavior.
Unfortunately not. The current situation is that when a shell sees a
shebang-free script, it decides whether it is Posix enough to execute
that script. So ash, bash, dash, ksh, zsh will all run shebang-free
scripts themselves, whereas csh, tcsh will defer to /bin/sh.
What I am arguing for is that *all* shells should defer to /bin/sh
to execute shebang-free scripts. As things stand, the behavior of a
shebang-free script depends on which shell is trying to run it, whereas
it should only depend (says I) on the identity of /bin/sh.
> Later, #! processing moved into the kernel so that interpreters would
> execute things directly.
Yes, and that's a Good Thing.
The experiences of the past show John Cowan
that there has always been a discrepancy cowan at ccil.org
between plans and performance. http://www.ccil.org/~cowan
--Emperor Hirohito, August 1945
More information about the TUHS