3.4.2.2. Mail Variables
Since the mail
program is not running all the time, there is no way for it to inform you
when you get new mail; therefore the shell does this instead. The shell can't actually check for incoming mail, but it can
look at your mail file periodically and determine whether the file has been
modified since the last check. The variables listed in Table 3-6 let you control how this
works.
Table 3-6. Mail variables
Variable
|
Meaning
|
MAIL
|
Name
of file to check for incoming mail
|
MAILCHECK
|
How
often, in seconds, to check for new mail (default 60
seconds)
|
MAILPATH
|
List of filenames,
separated by colons (:), to check for incoming
mail
|
Under the simplest scenario, you
use the standard UNIX mail program, and your mail file is
/usr/mail/yourname or something similar. In this
case, you would just set the variable MAIL
to this filename if you want your mail checked:
MAIL=/usr/mail/yourname
If your system administrator hasn't already done it for you, put a line
like this in your
.bash_profile.
However,
some people use nonstandard mailers that use multiple mail files;
MAILPATH was designed to accommodate this.
bash will use the value of
MAIL as the name of the file to check, unless
MAILPATH is set; in which case, the shell will
check each file in the
MAILPATH list for
new mail. You can use this mechanism to have the shell print a different
message for each mail file: for each mail filename in
MAILPATH, append a question mark followed by the message you
want printed.
For example, let's say you have a mail system that automatically sorts
your mail into files according to the username of the sender. You have mail
files called
/usr/mail/you/martin,
/usr/mail/you/geoffm,
/usr/mail/you/paulr, etc. You define your
MAILPATH as follows:
MAILPATH=/usr/mail/you/martin:/usr/mail/you/geoffm:\
/usr/mail/you/paulr
If you get mail from Martin Lee, the file
/usr/mail/you/martin will change.
bash will notice the change within one minute and
print the message:
You have new mail in /usr/mail/you/martin
If you are in the middle of running a command, the shell will wait until
the command finishes (or is suspended) to print the message. To customize
this further, you could define
MAILPATH to
be:
MAILPATH="\
/usr/mail/you/martin?You have mail from Martin.:\
/usr/mail/you/geoffm?Mail from Geoff has arrived.:\
/usr/mail/you/paulr?There is new mail from Paul."
The backslashes at the end of each line allow you to continue your command
on the next line. But be careful: you can't indent subsequent lines. Now, if
you get mail from Martin, the shell will print:
You have mail from Martin.
You can also use the variable
$_ in the
message to print the name of the current mail file. For example:
MAILPATH='/usr/mail/you?You have some new mail in $_'
When new mail arrives, this will print the line:
You have some new mail in /usr/mail/you
The ability to receive notification of mail can be switched on and off by
using the
mailwarn option to the
shopt
command.
0 件のコメント:
コメントを投稿