Previous | Table of Contents | Next |
The Korn shell uses two initialization files in the user's home directory to set the user's environment: .profile and .ksh-env, which is a file with any name you choose that controls the user's environment. You might want to name the file .kshrc, because its function is similar to the C shell .cshrc file.
When the user logs in, the .profile file is read and then the .ksh-env file. The .ksh-env file lets you configure the Korn shell session to your needs. Many of the commands that you would include in the .ksh-env file can be executed only by the Korn shell and cannot be included in the .profile file.
You must set the ENV environment variable to point to the .ksh-env file. The syntax for setting environment variables in the Korn shell is the same as for the Bourne shell: VARIABLE=value;export VARIABLE. As in the Bourne shell, you must export the variable to make it available to the shell. This example sets the environment variable for a .kshrc file:
$ ENV=$HOME/.kshrc;export ENV $
You set this environment variable in the .profile file; otherwise, the .kshrc file will not be found when the user logs in. The ENV variable has no default setting. Unless you set it, the feature is not used. The .ksh-env file is read each time a user starts the Korn shell from a command line.
The Korn shell has a number of options that specify the user's environment and control execution of commands. To display the current option settings, type set -o and press Return. In this example, the default options for the Korn shell for Solaris 2.x system software are displayed:
$ set -o Current option settings allexport off bgnice on emacs off errexit off gmacs off ignoreeof off interactive on keyword off markdirs off monitor on noexec off noclobber off noglob off nolog off nounset off privileged off restricted off trackall off verbose off vi off viraw off xtrace off $
The default options are described in Table 8-2. Customarily, these options are set in the .ksh-env file.
Option | Default | Description |
---|---|---|
allexport | off | Automatically exports variables when defined. |
bgnice | on | Executes all background jobs at a lower priority. |
emacs | off | Sets emacs/gmacs as the in-line editor. |
errexit | off | If a command returns the value False, the shell executes the ERR trap (if set), and immediately exits. |
gmacs | off | Sets gmacs as the in-line editor. |
ignoreeof | off | When the interactive option is also set, the shell does not exit at end-of-file. Type exit to quit the shell. |
interactive | on | The shell automatically turns the interactive option on so that shell prompts are displayed. |
keyword | off | The shell puts each word with the syntax of a variable assignment in the variable assignment list. |
markdirs | off | Displays a / following the names Kof all directories resulting from path name expansion. |
monitor | on | Enables job control. |
noclobber | off | Does not overwrite an existing file when the redirect operator (>) is used. |
noexec | off | Reads commands but does not execute them. You can use this option to debug shell script syntax errors. |
noglob | off | Disables file name expansion. |
nolog | off | Does not store function definitions in the history file. |
nounset | off | Displays an error message when the shell tries to expand a variable that is not set. |
privileged | off | When this option is off, the real UID and GID are used. When this option is on, the UID and GID are set to the values that were in effect when you started the shell. |
restricted | off | Sets a restricted shell. |
trackall | off | Makes command-tracked aliases when they are first encountered. |
verbose | off | Displays the input as it is read. |
vi | off | Sets vi as the in-line editor. |
viraw | off | Specifies character-at-a-time input from vi. |
xtrace | off | Displays commands and arguments as they are executed. |
To enable an option, type set -o option-name and press Return. To disable an option, type set +o option-name and press Return.
For example, entering this line in the user's .ksh-env file will set the in-line editor to vi:
set -o vi
This turns off vi as the in-line editor:
set +o vi
You can also set these options from a command line using the same syntax.
Previous | Table of Contents | Next |