- added links to source web interface, mentioned archive mirror list
- sections restructured, TOC added
- fixed broken links to old pages of DMR and the old THUS archive
- Schily release 2016-08-08 implements a strict posix mode
- SVR2 cornercase bug: "
break 0" in a one-fold loop renders an interactive shell dysfunctional. Fixed in Schily release 2016-06-20. Thanks to Jörg Schilling.
- Recent Schily variants implement
$(()), and now aims at posix coformance.
- 07-04-2016, 09-04-2016
- Subpage "common properties": the item about local copies of environment variables
(behaviour before export has been used) could be improved a lot thanks
to suggestions from Bela Lubkin!
- description in common.html about local copies of
environment variables has been improved a lot.
Thanks to Bela Lubkin for pointing this out.
22.03: fixed unbalanced quotes.
- 05/06-08-2015, 16-11-2015
- links to Schily variant updated
- origins: Louis Pouzin introduced a "shell" concept to Multics. Thanks to Konrad Schwarz for pointing this out.
- updated Schily sh variant
- "echo -n" as possible post-SVR4.0 criteria for IRIX 5/6 removed (not significant)
- mention Jörg Schillings schily tool box in end note
- Not the schily port, but earlier Schilix was published first
- SVR4.0 v2.1 has the colon redirection bug fixed, but not the earlier OSF/1 variant
- exec redirection bug still present in many (probably all) SVR4.x shells
- mention inactive code for
which was removed with SVR2
- SunOS 5.3: bugfix:
getopts in connection with function might loop
- fix about trap and foreground process was not for SunOS 5.6 but SunOS 5.5.1
- IRIX 5/6 knows both
- IRIX 5/6 handles empty
MAILCHECK at start
- IRIX 5/6 doesn't implement BSD built-in compatibility from SVR4
- two Reliant items merged
- SunOS 5 warns for stopped jobs also upon "
exit" (not only upon
kill doesn't accept a signal in connection with a job id
- added IRIS 3.7
- SVR4.2: mldmode/priv and TIMEOUT implemented from start
- SVR4.2: link to UW7 manual page
- SVR4.2: job control is off in sub-shells
- SVR4.2: with the flag "a", read now exports variables
- SVR4.2: multibyte support, localized messages, inspects also
LC_MESSAGES at run time
- incorporate csh-hack page from #! page, and add a page with
the corresponding code in csh
O_APPEND issue in common characteristics:
mention place in source.
- ... and refine "old ksh" to "ksh86" and mention place in source, too
- added 4.3BSD-Tahoe and -Reno (previously overlooked their changes)
- mention FreeBSD v7sh port
- Dynix ucb variant: use csh-hack only in ucb universe
- Dynix ucb variant: fixes for
continue n and
- Dynix ucb variant:
set -e disables while executing an
- OSF/1: improve error message (use original
argv) if executing a file fails
- IRIX: knows message
"POSIX shell builtin - cannot execute",
in case a command in /sbin would be called, which represents a POSIX shell (only) built-in.
- updates for heirloom sh
- mention different prefix for temp-files ("/tmp/sh" instead of "/tmp/sh-") on OSF/1
- add changes about
- mention built-in default paths where they differ from the usual path
- add manual for the Thompson shell on the 1st edition Unix
- added Dynix 3.2.0 (ucb and att variants)
- added Dynix PTX 1.2.0
- TIMEOUT mechanism: distinuish between early hardcoded and later environment variable mechanism
- and fixed item about Ultrix sh variant (concerning TIMEOUT): not activated but deactivated
- add manual page of Ultrix sh5 (representing SVR2)
- set -:
Add remarks about using
set with a dummy and shifting it away.
- common characteristics:
link explanation from D.Korn about special built-ins
and link autoconf chapter about portable shell programming.
- IRIX 5 ff.: don't inherit
IFS if running setuid/gid or as root
- IRIX 5 ff.: don't set euid back to uid (flag
-p and euid < 100)
- SVR4.2: UnixWare 1 didn't know
read -r yet
- common characteristics:
for i in var=value x; do" only loops over x (parses the first argument like an assignment).
- fixed wrong pointer to TUHS discussion about ^ being equivalent to | (thanks to Meillo)
- explain internal limit related to the
on a separate page
- the Bourne shell made scripts as part of a pipeline available
- move PWB footnote downwards to other footnotes
- add a 2nd example to 4th footnote of 7th ed shell (subtle 8bit bugs)
- added link to interview with S.Bourne in the australian Computerworld
bug: set -e doesn't affect commands on the same line ("set -e; false"). SunOS 5.5 fixes this.
characteristical common properties: since SVR2, when hashing was implemented,
PATH may not contain more than 255 elements.
wording of the headings improved on this occasion.
- add link to DMR's V1 Thomson shell manual
- Ultrix sh5 becomes a separate item with some more details
- not among
characteristical common properties: test operators -a and -o always test both conditions
- 04-01-2009: ...and: earlier Almquist shells also don't accept
a leading paren in "case x in (x)"
- Ultrix becomes a separate item and much more detailed
- SVR2: bugfix for continue and break
- SVR1: bugfix about checking traps when exiting
- not among
characteristical common properties:
test exits with 1 on error (instead of 2) also in some other shells
- SVR2: a race condition remains for a command substitution
containing a here-document being left part of a pipeline.
Add this also to "characteristical common properties".
- SunOS 5.5 bugfix for the above race condition
- SVR1: SIGFAIL changed from 03 to 02000 (decimal 208)
- SVR1: when regularly checking for untrapped signals to exit upon, do not use SIGFAIL only,
but the internally safed exit status, if available
- SVR1: the flag 'e' is not passed on to forked child scripts anymore
- SunOS 5.6 bug: `(...)` locks up the shell
if the last cmd in the subshell is a built-in
- SunOS 5.7 bugfix: sh -n ran loops forever before
characteristical common properties:
more examples for fatal errors of built-ins
- link to Hellwig Geisse's page about emulation of V7
- and it's possible to compile early System V shells on a System III emulation
- mention that ^ as synonmy for | was probably inherited
from the Thompson shell for reasons of convenience on upper case terminals
- SunOS 5.10 only does locale processing if /usr is mounted
- emphasize variant names and the important changes (arbitrarily chosen) with bold face
- EP/IX2.2.1 from between SVR4 and SVR4.2: colon-redirect-in-loop bug fixed
characteristical common properties:
mention workaround for built-ins failing.
Move item command substitution to top.
Mention portable shorter variant for exporting variables.
link Almquist shells where referred to
- 4.3BSD: fix "only does import IFS if euid=0..." to
"IFS not imported if uid=0..."
- ephasize the more important changes (subjectively chosen) with boldface
- fixed ambiguous wording about character classes
- SunOS 3 becomes separate item (due to number of differences to SVR2)
- SunOS 3 and SunOS 4:
shell tries to check for binary before interpreting a script
cd" system error messages introduced with SVR3,
not vendor specific (adjusted: SunOS4, AIX3, DG/UX4)
- Version 8: the pattern
* matches all files (but . and ..)
- 4.3BSD: IFS only imported if running under root or suid
- BSDs more readable reformatted
- cannot reproduce bugfix about -e on SVR1, item removed
- System III: item "bugfix echo */" : improved bad wording "files" to "filenames"
- not SVR2 but System III: bugfix "continue n" to jump to outer loops works
- System III also brought a change about
the exit status of a pipeline:
the precedence changed
- not SysIII but SVR2: "bugfix: not discarding empty arguments when expanding
(not to confuse with the later, modern
- not SVR1 but SVR2: "bugfix: here-documents work in connection with asynchronous commands"
- Heirloom variant added
- more detailed release numbers and some corrections for BSDs
- Schily variant added
- common characteristics: update to "assignments preceding builtins": POSIX behaviour in some other shells
- The comparison Bourne/Thompson/PWB wronlgy denied the PWB (aka Mashey) shell several
features which it provided intentionally (e.g. if/switch/while built-in, usability as filter)
- added SCO OpenServer 6.0.0 (Thanks to Rodolfo Martín for access)
- Sun fixed inheritance of IFS not with 5.4 but 5.7
- mention the unused V7 version string
- table of contents: mention ultrix and sunos 2
- SVR4 unconfirmed bug removed
(redirecting with exec in loop works only once)
- SVR4 introduced a bug: inside a loop,
redirection after the colon command works only the first time
- EP/IX additional flags fully documented and
documentation about flag I completed
- footnote about date to Korn's article
- Jeffrey A. Neitzel meanwhile also provides a
port of the
original code of the Thompson shell.
- Various fixes concerning invalid HTML and typos,
pointed out by Stefan Kanthak.
- SunOS 5.9:
when creating a temporary file,
the shell doesn't follow an already existing unresolved
symbolic link anymore
- added undocumented flags to EP/IX
- Gunnar Ritter publishes a
source port of the OpenSolaris shell.
This is the first time, that the traditional Bourne shell is
officially available on free unix flavours!
- SunOS 5.9
flag L as alias for h
- SunOS 5
"test" can mimic
BSD-like behaviour for the flag f
read knows "missing arguments"
- SunOS 4: built-ins behave SysV-like
depending on /usr/5bin in
- SunOS 4: meta notation in diagnostics,
if 8bit characters are considered unprintable
- SunOS 3 and 4: "
test: too many arguments"
- Some variants have the
output for functions with case statement fixed
- OSF1: "
cd: too many arguments"
- pipeline exit status handling changed in
- DG/UX becomes extra item
- converted endnotes to footnotes
- V7 sh in comparison with Thomson/Mashey shell.
- "priv, mldmode, umask -S: between UnixWare 1 and 2.1
- Link added to Geoff Collyer's V7 sh compiling on POSIX systems.
type" returns false on "
[...] not found"
at least on OSF1, AIX 3, SunOS 5, IRIX 5 and UnixWare/OpenUnix8.
- System III:
empty arguments are not discarded anymore (not to confuse with
IFS='\' splitting bug introduced in
Fixed on AIX.
- site moves from
- At least OSF1/V4, HP-UX 10 and AIX 3 are
fixed about the shell
internal quoting mechanism for parameter substitution inside
here-document inside command substitution inside doublequotes.
- Links to comments on the invention of the old and new
added next to the V3 and V4 manuals.
- Due to job control, SVR4
checks for signals also after a <newline>.
- SVR3 introduces a bug in the
parameter expansion. Fixed in AIX.
- SVR3: The trailing-colon-fix
doesn't apply to CDPATH but only to PATH.
- AIX: The behaviour about a trailing colon
in PATH is reintroduced/not fixed
- The "
cat<<`...`" bugfix is not SVR4 generic
but vendors fixed this idividually
(AIX, OpenServer, SunOS 5 and also OSF1). Except for Solaris,
the backticks are not interpreted.
- mention changes to "
(all over the place, after the introduction of the built-in
on System III).
- SunOS 4:
chdir was not re-introduced until 4.1
- SCO Unix 3.2 v4.0:
error message for "fd 19" bugfix mentioned
- SCO Unix 3.2 v4.2:
- spellchecking for "
cd" not introduced with
SCO Unix 3.2 v4.0 but with v4.2
- cat<<`...` bugfix
probably not SVR4 generic
- SunOS 5
is made an extra item
- ~ 09-2002:
- SystemIII: fork checking, exit leaves interactive sh,
- SVR2: continue n, readonly bugfix, bg jobs niced, cmd subst bugfix
- SVR3: restricted bugfix, trainling colon fix,
- added SunOS4 variant
- added OpenServer variant
- SVR4: fixed <<`..`, fixed r flag, several SunOS5 fixes
- SVR4.2: umask -S
- ~ 08-2002:
each variant extensively reinspected
- added System III, Version 8, IRIX 3/4, AIX 3, ReliantUnix
- common characteristics
- articles from Korn and Mashey
- ~ 01-2002:
- each variant slightly more detailed
- ~ 10-2001: