ACC SHELL
- 1 -
[4m1.[24m [4mksh93[0m
KSH-93 is the most recent version of the KornShell Language
described in "The KornShell Command and Programming
Language," by Morris Bolsky and David Korn of AT&T Bell
Laboratories, ISBN 0-13-182700-6. The KornShell is a shell
programming language, which is upward compatible with "sh"
(the Bourne Shell), and is intended to conform to the IEEE
P1003.2/ISO 9945.2 Shell and Utilities standard. KSH-93
provides an enhanced programming environment in addition to
the major command-entry features of the BSD shell "csh".
With KSH-93, medium-sized programming tasks can be performed
at shell-level without a significant loss in performance.
In addition, "sh" scripts can be run on KSH-93 without
modification.
The code should conform to the IEEE POSIX 1003.1 standard
and to the proposed ANSI-C standard so that it should be
portable to all such systems. Like the previous version,
KSH-88, it is designed to accept eight bit character sets
transparently, thereby making it internationally compatible.
It can support multi-byte characters sets with some
characteristics of the character set given at run time.
KSH-93 provides the following features, many of which were
also inherent in KSH-88:
o Enhanced Command Re-entry Capability: The KSH-93
history function records commands entered at any shell
level and stores them, up to a user-specified limit,
even after you log off. This allows you to re-enter
long commands with a few keystrokes - even those
commands you entered yesterday. The history file
allows for eight bit characters in commands and
supports essentially unlimited size histories.
o In-line Editing: In "sh", the only way to fix mistyped
commands is to backspace or retype the line. KSH-93
allows you to edit a command line using a choice of
EMACS-TC or "vi" functions. You can use the in-line
editors to complete filenames as you type them. You
may also use this editing feature when entering command
lines from your history file. A user can capture
keystrokes and rebind keys to customize the editing
interface.
o Extended I/O Capabilities: KSH-93 provides several I/O
capabilities not available in "sh", including the
ability to:
o specify a file descriptor for input and output
o start up and run co-processes
- 2 -
o produce a prompt at the terminal before a read
o easily format and interpret responses to a menu
o echo lines exactly as output without escape
processing
o format output using printf formats.
o read and echo lines ending in "\".
o Improved performance: KSH-93 executes many scripts
faster than the System V Bourne shell. A major reason
for this is that many of the standard utilities are
built-in. To reduce the time to initiate a command,
KSH-93 allows commands to be added as built-ins at run
time on systems that support dynamic loading such as
System V Release 4.
o Arithmetic: KSH-93 allows you to do integer arithmetic
in any base from two to sixty-four. You can also do
double precision floating point arithmetic. Almost the
complete set of C language operators are available with
the same syntax and precedence. Arithmetic expressions
can be used to as an argument expansion or as a
separate command. In addition there is an arithmetic
for command that works like the for statement in C.
o Arrays: KSH-93 supports both indexed and associative
arrays. The subscript for an indexed array is an
arithmetic expression, whereas, the subscript for an
associative array is a string.
o Shell Functions and Aliases: Two mechanisms - functions
and aliases - can be used to assign a user-selected
identifier to an existing command or shell script.
Functions allow local variables and provide scoping for
exception handling. Functions can be searched for and
loaded on first reference the way scripts are.
o Substring Capabilities: KSH-93 allows you to create a
substring of any given string either by specifying the
starting offset and length, or by stripping off leading
or trailing substrings during parameter substitution.
You can also specify attributes, such as upper and
lower case, field width, and justification to shell
variables.
o More pattern matching capabilities: KSH-93 allows you
to specify extended regular expressions for file and
string matches.
o KSH-93 uses a hierarchal name space for variables.
Compound variables can be defined and variables can be
- 3 -
passed by reference. In addition, each variable can
have one or more disciplines associated with it to
intercept assignments and references.
o Improved debugging: KSH-93 can generate line numbers
on execution traces. Also, I/O redirections are now
traced. There is a DEBUG trap that gets evaluated
before each command so that errors can be localized.
o Job Control: On systems that support job control,
including System V Release 4, KSH-93 provides a job-
control mechanism almost identical to that of the BSD
"csh", version 4.1. This feature allows you to stop
and restart programs, and to move programs between the
foreground and the background.
o Added security: KSH-93 can execute scripts which do not
have read permission and scripts which have the setuid
and/or setgid set when invoked by name, rather than as
an argument to the shell. It is possible to log or
control the execution of setuid and/or setgid scripts.
The noclobber option prevents you from accidentally
erasing a file by redirecting to an existing file.
o KSH-93 can be extended by adding built-in commands at
run time. In addition, KSH-93 can be used as a library
that can be embedded into an application to allow
scripting.
Documentation for KSH-93 consists of an "Introduction to
KSH-93", "Compatibility with the Bourne Shell" and a manual
page and a README file. In addition, the "New KornShell
Command and Programming Language," book is available from
Prentice Hall.
ACC SHELL 2018