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
, 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.