Previous Table of Contents Next


SPECIAL VARIABLES

There are a number of variables provided by the Korn shell that allow you to customize your working environment. Some are automatically set by the Korn shell, some have a default value if not set, while others have no value unless specifically set.

Special Variables

CDPATH search path for cd when not given a full pathname (no default)
COLUMNS window width for in-line edit mode and select command lists (default 80)
EDITOR pathname of the editor for in-line editing (default /bin/ed)
ENV pathname of the environment file (no default)
ERRNO error number returned by most recently failed system call (system dependent)
FCEDIT default editor for the fc command
FPATH search path for auto-loaded functions
pathname of the history file
HISTFILE pathname of the history file (default $HOME/.sh_history)
HISTSIZE number of commands to save in the command history file (default 128)
HOME home directory
IFS internal field separator (default space, tab, newline)
LINES specifies column length for select lists
MAIL name of mail file
MAILCHECK specifies how often to check for mail (default 600 seconds)
MAILPATH search path for mail files (no default)
OLDPWD previous working directory
OPTARG value of the last getopts option argument
OPTIND index of the last getopts option argument
PATH search path for commands (default /bin:/usr/bin:)
PPID process id of the parent shell
PS1 primary prompt string (default $, #)
PS2 secondary prompt string (default >)
PS3 select command prompt (default #?)
PS4 debug prompt string (default +)
RANDOM contains a random number
REPLY contains the input to the read command when no variables are given
SECONDS contains number of seconds since Korn shell invocation
SHELL pathname of shell
TERM specifies your terminal type (no default)
TMOUT Korn shell timeout variable (default 0)
VISUAL pathname of the editor for in-line editing

ARRAY VARIABLES

One-dimensional arrays are supported by the Korn shell. On most systems, arrays can have a maximum of 512 elements. Array subscripts start at 0 and go up to 511. Any variable can become an array by simply referring to it with a subscript.

Array Variable Assignment Format

variable[0]=value variable[1]=value ... variable[n]=value
set –A variable value0 value1 ... valuen
typeset variable[0]=value variable[1]=value ... variable[n]=value assign values to array variable elements
set +A variable value0 value1 ... valuen reassign values to array variable elements
typeset –attributes variable[0]=value variable[1]=value ... variable[n]=value assign attributes and values to array variable elements
typeset –attributes variable assign attributes to array variable
typeset +attributes variable remove attributes from array variable (except readonly)

Array Variable Evaluation

${array}, $array array element zero
${array[n]} array element n
${array[*]}, ${array[@]} all elements of an array
${#array[*]}, ${#array[@]} number of array elements
${#array[n]} length of array element n

MISC SUBSTITUTION

$(command) replace with the standard output of command
$((arithmetic-expression) replace with the result of arithmetic-expression
$(<file) replace with the contents of file
`command` replace with the standard output of command (provided for compatibility with the Bourne shell)
~ replace with $HOME
~user replace with the home directory of user
~– replace with $OLDPWD (previous directory)
~+ replace with $PWD (current directory)

QUOTING

Quotes are used when assigning values containing whitespace or special characters, to delimit variables, and to assign command output. They also improve readability by separating arguments from commands.

'...' remove the special meaning of enclosed characters except '
"..." remove the special meaning of enclosed characters except $, ', and \
\c remove the special meaning of character c
`command` replace with the standard output of command (provided for compatibility with the Bourne shell)

IN-LINE EDITORS

In-line editing provides the ability to edit the current or previous commands before executing them. There are three in-line editing modes available: emacs, gmacs, and vi. The emacs and gmacs modes are basically the same, except for the way Ctl-t is handled. The in-line editing mode is specified by setting the EDITOR or VISUAL variables, or with the set –o command. The editing window width is specified by the COLUMNS variable. For lines longer than the window width, a mark is displayed to notify position. The marks >, <, and * specify that the line extends to the right, left, or both sides of the window.


Previous Table of Contents Next
1