ksh Command

Purpose

Invokes the Korn shell.

Syntax

ksh [ -i ] [ { + | - } { a e f h k m n p t u v x } ] [ -o Option ... ] [ -c String | -s | -r | File [ Parameter ] ]

Note: Preceding a flag with + (plus) rather than - (minus) turns off the flag.

Description

The ksh command invokes the Korn shell, which is an interactive command interpreter and a command programming language. The shell carries out commands either interactively from a terminal keyboard or from a file.

The Korn shell is backwardly compatible with the Bourne shell (invoked with the bsh command) and contains most of the Bourne shell features as well as several of the best features of the C shell.

Note: The ksh wait built in behaves in a manner similar to the parent wait() API.

An enhanced version of the Korn shell, called ksh93, is also available. The enhanced Korn shell has additional features that are not available in the default Korn shell.

Additionally, a restricted version of the Korn shell, called rksh, is available. The restricted Korn shell allows administrators to provide a controlled execution environment for the users.

Flags

Item Description
-a Exports automatically all subsequent parameters that are defined.
-c String Causes the Korn shell to read commands from the String variable. This flag cannot be used with the -s flag or with the File[Parameter] parameter.
-e Executes the ERR trap, if set, and exits if a command has a nonzero exit status, unless in the following conditions:
  • The simple command is contained in a "&&" or "||" list.
  • The simple command immediately follows "if", "while" or "until".
  • The simple command is contained in a pipeline following "!".
This mode is disabled when profiles are read.
-f Disables file name substitution.
-h Designates each command as a tracked alias when first encountered.
-i Indicates that the shell is interactive. An interactive shell is also indicated if shell input and output are attached to a terminal (as determined by the ioctl subroutine). In this case, the TERM environment variable is ignored (so that the kill 0 command does not kill an interactive shell) and the INTR signal is caught and ignored (so that a wait state can be interrupted). In all cases, the QUIT signal is ignored by the shell.
-k Places all parameter assignment arguments in the environment for a command, not just those arguments that precede the command name.
-m Runs background jobs in a separate process and prints a line upon completion. The exit status of background jobs is reported in a completion message. On systems with job control, this flag is turned on automatically for interactive shells.
-n Reads commands and checks them for syntax errors, but does not execute them. This flag is ignored for interactive shells.
-o Option Prints the current option settings and an error message if you do not specify an argument. You can use this flag to enable any of the following options:
allexport
Same as the -a flag.
errexit
Same as the -e flag.
bgnice
Runs all background jobs at a lower priority. This is the default mode.
emacs
Enters an emacs-style inline editor for command entry.
gmacs
Enters a gmacs-style inline editor for command entry.
ignoreeof
Does not exit the shell when it encounters an end-of-file character. You must use the exit command, or override the flag and exit the shell by pressing the Ctrl-D key sequence more than 11 times.
keyword
Same as the -k flag.
markdirs
Appends a / (slash) to all directory names that are a result of filename substitution.
monitor
Same as the -m flag.
noclobber
Prevents redirection from truncating existing files. When you specify this option, use the redirection symbol >| (right caret, pipe symbol) to truncate a file.
noexec
Same as the -n flag.
noglob
Same as the -f flag.
nolog
Prevents function definitions from being saved in the history file.
nounset
Same as the -u flag.
privileged
Same as the -p flag.
verbose
Same as the -v flag.
trackall
Same as the -h flag.
vi
Enters the insert mode of a vi-style inline editor for command entry. Entering escape character 033 puts the editor into the move mode. A return sends the line.
viraw
Processes each character as it is typed in vi mode.
xtrace
Same as the -x flag.

You can set more than one option on a single ksh command line.

-p Disables the processing of the $HOME/.profile file when you use the shell as a login shell.
-r Runs a restricted shell. With a restricted shell you cannot:
  • Change the current working directory.
  • Set the value of the SHELL, ENV, or PATH variable.
  • Specify the pathname of a command that contains a / (slash).
  • Redirect output of a command with > (right caret), >| (right caret, pipe symbol), <> (left caret, right caret), or >> (two right carets).
Using this flag is the same as issuing the rksh command.
-s Causes the ksh command to read commands from the standard input. Shell output, except for the output of the special commands, is written to file descriptor 2. This parameter cannot be used with the -c flag or with the File[Parameter] parameter.
-t Exits after reading and executing one command.
-u Treats unset parameters as errors when substituting.
-v Prints shell input lines as they are read.
-x Prints executed commands and their arguments.

Files

Item Description
/usr/bin/ksh Contains the path name to the Korn shell.
/tmp/sh* Contains temporary files that are created when a shell is opened.