Recent changes on "www.in-ulm.de/~mascheck/various/shebang/
"
- 2021-10-20
- 2020-22-22
- added links to sbang and long-shebang, thanks to a hint from Todd Gamblin
- 2017-04-23
- more info about possible origin and naming (mails from DMR and Doug McIllroy)
- 2017-03-28
- added 8th edition to table, linked
sys1.c
and exec(2)
- 2016-09-11/12
- added pre 8th edition in table, not tested, but by comparison of code
- added Demos, the Soviet variant of 2.9BSD/4.2BSD with a special
#!
implementation, thanks to Random832
- 2015-04-03
- added cygwin 1.7.35. changed default in table "do not search current dir".
- 2011-12-27
- 2011-12-15
- 2011-11-27/23
- some corrections about SCO OSR5 vs 6, thanks to Bela Lubkin
- SVR4.0 v2.1 added
- 28-10-2011:
- added Ultrix 4.5 (µvax3900)
- 03-10-2011:
- added missing fields for SunOS 4
- 13-08-2011:
- added link to wiktionary about origin of the term
- 27-02-2011:
- completed UnixWare (7.1.4)
- added section with summary what's special about #!
- 29-01-2011:
- add some history about 386BSD and NetBSD
- table: merged "only 1st arg" and "each arg in its own argv[x]", improved a few shortcuts
- add FreeBSD "8.2"
- improve illustration of code history on FreeBSD
- mention fancy code (2.8BSD, BSD/OS2.0)
- 23-01-2011:
- added Cygwin 1.7.7 and Beta19 (Win5.1)
- added UWIN 4.5 (Win5.1)
- move content from suid table footnote to item "setuid"
- 20-01-2011:
- UWIN removed until all details are clear
- 16/17-01-2011:
- among the Bell Labs releases, #! was not added until SVR4
- #! in 2.8BSD might origin from the U.S. Geological Survey in Menlo Park, not from Berkeley.
- link to TUHS for all mentioned 4.xBSD files
- 13-01-2011:
- also mention 2.xBSD line (spotted by Richard Kettlewell)
- 28/30-12-2010/01-01-2011:
- added Dynix 3.2, Dynix PTS 1.2
- both do not require the mythical blank after #!, and they're derived from 4.2
- 26-12-2010:
- Neozeeds NetBSD 0.8/0.9 trees suggest that, among the *BSDs, NetBSD might have implemented setuid scripts.
- NetBSD 0.9 behaves different from 1.0
- 24-12-2010:
- 16..21-12-2010:
- added 4.3BSD
- setuid for #! was disabled with 4.3BSD-Tahoe
- link to source of 4.4BSD kern_exec.c (at TUHS) in subpage
- 4.3BSD does both for a overlong #! line: cut-off and ENOEXEC
- 14-12-2010:
- added Plan 9
- added 386BSD
- UWIN (not listed yet) accepts nested #!
- 06-04-2010:
- added pending results for MacOS X 10.3 ff
- 02-04-2010:
- added MacOS X 10.3 ff (still with open questions)
- added links to wikipedia articles
- 12-03-2010:
- added Linux 0.10/0.12/0.99.2 to table, corrected 2.4.0 ff. (path in argv[0])
- 16-02-2010:
- Linux 0.10(/0.09?) originally implemented a maximum length of 1022 and
changed this to 127 with 0.12
- 11-02-2010:
- added ULTRIX 4.0
- list showargs in K&R C form
- 07-12-2009:
- 18-11-2009:
- the very Linux release starting to accept nested #! is 2.6.27.9
- 11-11-2009:
- recent 2.6 Linux accept nested interpreters
(Thanks to Mantas Mikulėnas)
- 18-08-2009:
- GNU autoconf 2.64 documentation (2009-07-26) doesn't require blank after #! anymore.
- 08-01-2009:
- add subitems to toc
- add ksh and bash concerning behaviour of privileged flag for suid scripts (was only svr4 shell)
- and: add keywords about other suid script security problems
- 04-01-2009:
- add item "possible errors" to "selected issues".
- move endnote about line truncation to "possible errors".
- 02-01-2009:
- move endnote "can #! be nested" to selected issues
- link NetBSD CVS in suid paragraph
- improve various wordings
- 12-10-2008:
- shells also might take over for #! due to a mount with "noexec"
- 20-08-2008:
- some more details for BIG-IP 4.2 which is directly based on BSD/OS 4.1
- bsd/os footnote renamed to big-ip
- 17-08-2008:
- HP-UX 11.31 tested
- FreeBSD 6.0+ corrected (arch dependent) and extended
- more details about the origin of setuid scripts on NetBSD
- 16-08-2008:
- the original Almquist shell has compile time support for #!
- 07-08-2008:
- more infos about setuid sccripts on 4.4BSD, link kern_exec.c
- setuid column updated
- 01-08-2008:
- setuid column updated for several variants.
- 31-07-2008:
- added item about setuid/gid bit and a footnote about openserver.
- 25-05-2008:
- wording about POSIX.2 paragraph corrected and link to SUSv2 (had moved) updated
- 26-02-2008:
- new table column: set user id on execution allowed
- 16-02-2008:
- new table column: check whether current directory is searched
- 29-01-2008:
- 32 byte limit on SVR3, etc. not necessarily hardcoded.
- the table had some entries (from about '02) where the line apparently was truncated to 80 characters.
However, this was a confusion with bash-1 taking over upon ENOEXEC.
- 25-11-2007:
- added OpenServer 6.0.0 (Thanks to Rodolfo Martín)
- 28-10-2007:
- 01-09-2007:
- no evidence, that the blank is prohibited in any implementation
- simplified paragraph about location of env
- 28-07-2007:
- 22-02-2007:
- Ultrix 4.3 (Thanks to the IFCTF), and: struct exec here responsible
for 32 byte limit, too
- called pound-bang, too
- add column "tabs converted to space"
- 06-03-2006:
- sidenote: env usually must not be a script
- asked David MacKenzie about possible origin of "#! /" to no avail
- 01-02-2006:
- explanation for Minix limit
- 31-01-2006:
- 28-01-2006:
- 16-01-2006:
- free *BSD notes compressed
- 15-01-2006:
- column "#" added
- FreeBSD 6 added (Akinori Musha)
- 10-01-2006:
- HP/UX 8/9 and IRIX 5/6 collapsed
- 13-11-2005:
- 27-04-2005:
- two bugs in UNIX FAQ mentioned
- 24-12-2004:
- 06-02-2004:
- problem with autoconf explanation
- possible origin of "#! /" (wronlgy documented as mandatory in 4.1.snap BSD exec(2))
- 08-01-2004:
- More details for free BSD variants.
- 08-05-2003:
- OpenServer 5 added.
- bash-2 might evaluate #!, too
- 02-01-2003:
- complete "accept interpreter" column
- 05-11-2002:
- OpenBSD 3.1 added. OpenBSD 2.9 corrected.
- 15-10-2002:
- column "remove space" added
- column "accept interpreter" added
- 14-10-2002:
- 12-08..30-08-2002:
- ...
- 13-08-2001:
- ...