shl(C)
shl --
shell layer manager
Syntax
shl
Description
The shl command allows a user to interact with more than
one shell from a single terminal. The user controls these shells,
known as layers, using the commands described below.
The current layer is the layer that can receive input from
the keyboard. Other layers attempting to read from the keyboard are
blocked. Output from multiple layers is multiplexed onto the
terminal. To have the output of a layer blocked when it is not
current, the
stty(C)
option loblk may be set within the layer.
The stty character swtch (set to
<Ctrl>z if NUL) is used to switch control to
shl from a layer. shl
has its own prompt, ``>>>'', to help distinguish it from a layer.
A layer is a shell that has been bound to a virtual tty
device
(/dev/sxt??[0-7] or /dev/sxt/??[0-7]). The
virtual device can be manipulated like a real tty device using
stty and
ioctl(S).
Each layer has its own process group ID.
A name is a sequence of characters delimited by a blank,
tab or newline. Only the first eight characters are significant. The
names (1) through (7) cannot be used
when creating a layer. They are used by shl when no name
is supplied. They may be abbreviated to just the digit.
Commands
The following commands may be issued from the shl prompt
level. Any unique prefix is accepted.
create [ name ]-
Create a layer called name and make it the current layer.
If no argument is given, a layer will be created with a name of the
form ``(#)'' where ``#'' is the last digit of the virtual
device bound to the layer. The shell prompt variable PS1
is set to the name of the layer followed by a space, or, if super
user, the name followed by a sharp (#) and a space. A maximum of
seven layers can be created.
block name [ name ... ]-
For each name, block the output of the corresponding layer
when it is not the current layer. This is equivalent to setting the
stty option loblk within the layer.
delete name [ name ... ]-
For each name, delete the corresponding layer. All
processes in the process group of the layer are sent the
SIGHUP signal (see
signal(S)).
help (or ?)-
Print the syntax of the shl commands.
layers [ -l ] [ name ... ]-
For each name, list the layer name and its process
group. The -l option produces a
ps(C)-like
listing. If no arguments are given, information is presented for all
existing layers.
resume [ name ]-
Make the layer referenced by name the current layer. If no
argument is given, the last existing current layer will be resumed.
toggle-
Resume the layer that was current before the last current layer.
unblock name [ name ... ]-
For each name, do not block the output of the
corresponding layer when it is not the current layer. This is
equivalent to setting the stty option loblk
within the layer.
quit-
Exit shl. All layers are sent the SIGHUP signal.
name-
Make the layer referenced by name the current layer.
Limitations
It is inadvisable to kill shl.
shl normally accesses sxt??? devices correctly
at all times. Other programs may be able to work with these devices
if they have the correct protocol and device name; however some
programs may not expect devices to be located outside
/dev, and some programs may expect all terminal devices to
begin with the prefix tty.
If shl does not run properly on a particular terminal, you
may have to set istrip for that terminal's line by
entering the following command at the terminal:
stty istrip
By default, the Operating System is not configured for shell
layers. To add this to kernel, use the command:
mkdev shl
This executes a script which prompts you for the number of sessions
desired. The script also allows you to relink the kernel. The new
session limit becomes effective after the kernel is rebooted. (For
more information, see
mkdev(ADM).)
Files
/dev/sxt??[0-7] or-
/dev/sxt/??[0-7]-
virtual tty devices
$SHELL-
variable containing pathname of the shell to use (default is
/bin/sh)
See also
ioctl(S),
mkdev(ADM),
sh(C),
signal(S),
stty(C),
sxt(M)
Standards conformance
shl is conformant with:
AT&T SVID Issue 2.
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003