ARG_MAX
| Shells
| whatshell
| portability
| permissions
| UUOC
| ancient
| -
| ../Various
| HOME
"$@"
| echo/printf
| set -e
| test
| tty defs
| tty chars
| $()
vs )
| IFS
| using siginfo
| nanosleep
| line charset
| locale
2011-01-01 (see recent changes)
Each universe is simulating a separate environment with commands, headers and libraries. However, the kernel is certainly always the same.
Sequent DYNIX 3.2.0 offers two universes:
ucb
": 4.2BSD-like
att
": SVR2.2-like
Siemens SINIX V5.2 (predecessor to ReliantUnix) offers three universes:
ucb
": 4.2BSD-like, and for administration only
xopen
", aka "att
": SVR3-like, allegedly conforming to XPG3
sie
" (like siemens): SystemIII-like , or SINIX-V2.1-like
sie
universe exists for backwards compatibility.
sie
universe was interesting for me, because the original implementation only ran on special hardware.
How to enter a universe
$ att command
$ ucb command
You launch a single process in a universe by calling a command named like the according universe.
Each process, and all its children if they don't switch again themselves,
run in this universe. You don't switch universes system wide.
If you call the command without any arguments, it behaves as if you spawn a new login shell.
Implementation
The mechanism to emulate several environments at the same time is as follows:
Important directory hierarchies (like /bin) are available
in several variations, one for each universe.
The original directory is a symbolic link to the actual destinations.
The link is a socalled conditional link and consist of several components,
separated by blanks.
Such a link resolves transparently to one of the destinations, depending on which universe you're in.
Conditional links are created with the "-c
" flag of ln(1)
.
Example for the link to /bin
:
ln -c ucb=.bin att=/usr/att/bin /bin
DYNIX:
/bin -> ucb=.bin att=/usr/att/bin
/lib -> ucb=.lib att=/usr/att/lib
/usr/bin -> ucb=.bin att=/usr/att/usr/bin
/usr/include -> ucb=.include att=/usr/att/usr/include
/usr/lib -> ucb=.lib att=/usr/att/usr/lib
/usr/pub -> ucb=.pub att=/usr/att/usr/pub
(the ucb
-part is relative to the dirname,
that is, /usr/include
points to /usr/.include
for the ucb
universe)
universe(1) login(1) ln(1) csymlink(2) readclink(2) environ(7)
SINIX
/bin
:
/bin -> ucb=/.bin sie=/usr/sie_root/bin att=/usr/att/bin
ucb
universe,
with the "-c
" flag of ln(1)
.
ucb
universe solely exists for administrational purposes.
I haven't found the tape with the manpages yet, which are
unfortunately not installed on my machine.
Meanwhile I assume that the mechanism on SINIX is sufficiently equivalent to DYNIX.
<http://www.in-ulm.de/~mascheck/various/universes/>