Environment Variables

   

Korn Shell: Unix and Linux Programming Manual, Third Edition, The
By Anatole Olczak

Table of Contents
Chapter 7.  The Environment


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.

Table 7.1 lists some of the Korn shell variables. The following sections cover some of the important variables and how they affect your working environment. All the available variables are listed in the Appendix E.

Table 7.1. Some Korn Shell Environment 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)

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)

LANG

locale

MAIL

name of mail file

MAILCHECK

specifies how often to check for mail (default 600 seconds)

MAILPATH

search path for mail files (no default)

PATH

search path for commands (default /bin:/usr/bin:)

PS1

primary prompt string (default $, #)

PS2

secondary prompt string (default >)

PS3 select

command prompt (default #?)

PS4

debug prompt string (default +)

SHELL

pathname of the shell

TERM

specifies your terminal type (no default)

TMOUT

Korn shell timeout variable (default 0)

VISUAL

pathname of the editor for in-line editing

The cd Command

New functionality has been added to the cd command. You can change back to your previous directory with:

 $ cd ?/span> 

It also causes the name of the new current directory to be displayed. Here, we start in /home/anatole/bin, then change directory to /usr/spool/news/lib:

 $ cd /usr/spool/news/lib 

Now we cd back to /home/anatole/bin:

 $ cd ?/span>  /home/anatole/bin 

Another cd ?/span>, and we are back in /usr/spool/news/lib:

 $ cd ?/span>  /usr/spool/news/lib 

You can also change directories by substituting parts of the current pathname with something else using this format:

 cd string1 string2 

where string1 in the current pathname is substituted with string2. The new current working directory is displayed after the move. In this example, we start in /usr/spool/uucp:

 $ pwd  /usr/spool/uucp 

By substituting uucp with cron, we change directory to /usr/spool/cron:

 $ cd uucp cron  /usr/spool/cron 

CDPATH

The CDPATH variable is provided to make directory navigation easier. It contains a list of colon-separated directories to check when a full pathname is not given to the cd command. Each directory in CDPATH is searched from left-to-right for a directory that matches the cd argument. A : alone in CDPATH stands for the current directory. This CDPATH:

 $ print $CDPATH  :/home/anatole:/usr/spool 

indicates to check the current directory first, /home/anatole, then /usr/spool when cd is not given a full pathname. Instead of typing cd /usr/spool/uucp, you could just type cd uucp:

 $ cd uucp  /usr/spool/uucp 

Or to change directory to /home/anatole/bin, you could type cd bin:

 $ cd bin  /home/anatole/bin 

There is no default for CDPATH, so if it not specifically set, this feature is not enabled.

Make sure that only frequently used directories are included, because if CDPATH is too large, performance can be adversely affected by having to check so many directories each time cd is invoked.

PATH

The PATH variable contains a list of colon-separated directories to check when a command is invoked. Each directory in PATH is searched from left-to-right for a file whose name matches the command name. If not found, an error message is displayed. A : alone in PATH specifies to check the current directory. This PATH setting specifies to check the /bin directory first, then /usr/bin, /usr/spool/news/bin, and finally the current directory:

 $ print $PATH  /bin:/usr/bin:/usr/spool/news/bin: 

Don't let PATH get too large, because performance can be adversely affected by having to check so many directories each time a command is invoked.

If not set, the default value for PATH is /bin:/usr/bin.

TMOUT

The TMOUT variable specifies the number of seconds that the Korn shell will wait for input before displaying a 60-second warning message and exiting. If not set, the default used is 0, which disables the timeout feature. To set a 10-minute timer, set TMOUT to 600:

 $ TMOUT=600 

This variable is usually set by the system administrator in the /etc/profile file.

Mail

The Korn shell provides a number of variables that allow you to specify your mailbox file, how often to check for mail, what your mail notification message is, and a search path for mailbox files.

MAILCHECK

The MAILCHECK variable specifies how often, in seconds, to check for new mail. If not set, or set to zero, new mail is checked before each new prompt is displayed. Otherwise, the default setting is 600 seconds (10 minutes).

MAIL

The MAIL variable contains the name of a single mailbox file to check for new mail. It is not used if MAILPATH is set.

MAILPATH

The MAILPATH variable contains a colon-separated list of mailbox files to check for new mail and is used if you want to read multiple mailboxes. It overrides the MAIL variable if both are set. This MAILPATH setting specifies to check two mailbox files, /home/anatole/mbox and /news/mbox.

 $ print $MAILPATH  MAILPATH=/home/anatole/mbox:/news/mbox 

Just so you don't think you can go snooping around someone else's mailbox, this only works if you have read permission on the mailbox file.

If MAILPATH is not set, there is no default.

New Mail Notification Message

When you get new mail, the Korn shell displays this message on your terminal just before the prompt:

 you have mail in mailbox-file 

You can also create your own mail notification message by appending a ? followed by your message to the mailbox files given in MAILPATH. If you wanted your message to be 'New mail alert', then MAILPATH would be set like this:

 $ MAILPATH=~anatole/mbox?'New mail alert' 

What if you had two mailboxes set in MAILPATH? How would you know which one to read? For this reason, the Korn shell has the _ (underscore) variable. When given in the new mail notification message, it is substituted for the name of the mail box file. This MAILPATH setting:

 $ MAILPATH=~anatole/mbox?'Check $_':\  /news/mbox?'Check $_' 

would cause "Check /home/anatole/mbox" or "Check /news/mbox" to be displayed if new mail was received in either of the mailboxes.

TERM

The TERM variable specifies your terminal type, and is usually set by your system administrator in the global /etc/profile file. If it's not set there, then it's probably in your ~/.profile file. You can tell if it's not set correctly by invoking vi on an existent file. If you get garbage on your screen or the vi commands are not working correctly, try resetting the TERM variable to something else:

 $ typeset  x TERM=term-type 

Then try running vi again and see what happens.


       
    Top
     



    Korn Shell. Unix and Linux Programming Manual, Third Edition
    Korn Shell. Unix and Linux Programming Manual, Third Edition
    ISBN: N/A
    EAN: N/A
    Year: 2000
    Pages: 177

    flylib.com © 2008-2017.
    If you may any questions please contact us: flylib@qtcs.net