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.
New functionality has been added to the cd command. You can change back to your previous directory with:
$ cd —
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 — /home/anatole/bin
Another cd –, and we are back in /usr/spool/news/lib:
$ cd — /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
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.
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.
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.
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.
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).
The MAIL variable contains the name of a single mailbox file to check for new mail. It is not used if MAILPATH is set.
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.
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.
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.
18.223.171.168