mh_profile(5mh)
Name
mh_profile − user customization for MH message system
Syntax
~/.mh_profile
Description
Each user of MH is expected to have a file named .mh_profile in his or her home directory. This file contains a set of user parameters used by some or all of the MH family of programs. Each line of the file is in the format:
profile−component: value
The possible profile components are described in the following table. Only Path: is mandatory. The others are optional; some have default values if they are not present. In the notation used below, (profile/context, default: value) indicates whether the information is kept in the user’s MH profile or MH context and indicates what the default value is.
Path: Mail
Locates MH transactions in directory “Mail”.
(profile, no default)
Context: context
Declares the location of the MH context file.
(profile, default: <mh−dir>/context)
Current-Folder:
Keeps track of the current open folder.
(context, default: +inbox)
Previous-Sequence: pseq
Names the sequences which should be defined as the msgs or msg argument given to the program. If not present, or empty, no sequences are defined. Otherwise, for each name given, the sequence is first zeroed and then each message is added to the sequence.
(profile, no default)
Sequence-Negation: not
Defines the string which, when prefixed to a sequence name, negates that sequence. Hence, notseen means all those messages that are not a member of the sequence seen.
(profile, no default)
Unseen-Sequence: unseen
Names the sequences which should be defined as those messages recently incorporated by inc. Show knows to remove messages from this sequence once it thinks they have been seen. If not present, or empty, no sequences are defined. Otherwise, for each name given, the sequence is first zeroed and then each message is added to the sequence.
(profile, no default)
mh−sequences: .mh_sequences
The name of the file in each folder which defines public sequences. To disable the use of public sequences, leave the value portion of this entry blank.
(profile, default: .mh_sequences)
atr−seq−folder: 172 178−181 212
Keeps track of the private sequence called seq in the specified folder.
(context, no default)
Editor: /usr/new/mh/prompter
Defines editor to be used by comp(,), dist(,), forw(,), and repl(.).
(profile, default: prompter)
Msg−Protect: 600
Defines octal protection bits for message files. See chmod() for an explanation of the octal number.
(profile, default: 0600)
Folder−Protect: 700
Defines protection bits for folder directories. See chmod(1) for an explanation of the octal number
(profile, default: 0700)
program: default switches
Sets default switches to be used whenever the MH program is invoked. For example, you could override the Editor: profile component when replying to messages by adding a component such as: repl: −editor /bin/ed
(profile, no defaults)
−next: nexteditor
Names “nexteditor” to be the default editor after using “lasteditor”. This takes effect at “What now?” level in comp, dist, forw, and repl. After editing the draft with “lasteditor”, the default editor is set to be “nexteditor”. If the user types “edit” without any arguments to “What now?”, then “nexteditor” is used.
(profile, no default)
Folder-Stack: folders
The contents of the folder-stack for the folder command.
(context, no default)
mhe:
If present, tells inc to compose an MH auditfile in addition to its other tasks.
Alternate−Mailboxes:mh@uci−750a, bug-mh*
Tells repl and scan which addresses are really yours. In this way, repl knows which addresses should be included in the reply, and scan knows if the message really originated from you. Addresses must be separated by a comma, and the hostnames listed should be the official hostnames for the mailboxes you indicate, as local nicknames for hosts are not replaced with their official site names. For each address, if a host is not given, then that address on any host is considered to be you. In addition, an asterisk (*) may appear at either or both ends of the mailbox and host to indicate wild-card matching.
(profile, default: your user-id)
Draft−Folder: drafts
Indicates a default draft folder for comp, dist, forw, and repl; which allows more than one draft message to exist at the same time.
(profile, no default)
digest−issue−list: 1 Tells forw the last issue of the last volume sent for the digest list.
(context, no default)
digest−volume−list: 1
Tells forw the last volume sent for the digest list.
(context, no default)
MailDrop: .mail
Tells inc your maildrop, if different from the default. This is superseded by the $MAILDROP envariable.
(profile, default: /usr/spool/mail/$USER)
Signature: "Rand MH System"
Tells send your mail signature. This is superseded by the $SIGNATURE envariable. The signature must be enclosed in double quotation marks (" ").
The following profile elements are used whenever an MH program invokes some other program such as more(.). The .mh_profile can be used to select alternative programs if the user wishes.
The default values are given in the following examples:
fileproc: /usr/new/mh/refile
incproc: /usr/new/mh/inc
installproc: /usr/new/lib/mh/install-mh
lproc: /usr/ucb/more
mailproc: /usr/new/mh/mhmail
mhlproc: /usr/new/lib/mh/mhl
moreproc: /usr/ucb/more
mshproc: /usr/new/mh/msh
packproc: /usr/new/mh/packf
postproc: /usr/new/lib/mh/post
rmmproc: none
rmfproc: /usr/new/mh/rmf
sendproc: /usr/new/mh/send
showproc: /usr/ucb/more
whatnowproc: /usr/new/mh/whatnow
whomproc: /usr/new/mh/whom
If you define the environment variable $MH, you can specify a profile other than .mh_profile to be read by the MH programs that you invoke. If the value of $MH is not absolute, (that is, does not begin with a slash (/), it will be presumed to start from the current working directory. This is one of the very few exceptions in MH where nonabsolute pathnames are not considered relative to the user’s MH directory.
Similarly, if you define the envariable $MHCONTEXT, you can specify a context other than the normal context file (as specified in the MH profile). As always, unless the value of $MHCONTEXT is absolute, it will be presumed to start from your MH directory.
MH programs also support other envariables:
$MAILDROP : tells inc the default maildrop
This supersedes the MailDrop: profile entry.
$SIGNATURE : tells send and post your mail signature
This supersedes the Signature: profile entry.
$HOME : tells all MH programs your home directory
$TERM : tells MH your terminal type
The $TERMCAP envariable is also consulted. In particular, these two envariables tell scan and mhl how to clear your terminal and how many columns wide your terminal is. They also tell mhl how many lines long your terminal screen is.
Some envariables are set by MH programs for whatnowproc. These are:
$editalt: the alternative message
Set by dist and repl during edit sessions, so you can read the message being distributed or replied-to. The message is also available through a link called @ in the current directory if your current working directory and the folder the message lives in are on the same UNIX filesystem.
$mhdraft: the path to the working draft
Set by comp, dist, forw, and repl to tell the whatnowproc which file to ask What now? questions about. In addition, dist, forw, and repl set $mhfolder if appropriate.
$mhaltmsg
Set by dist and repl to tell the whatnowproc about an alternative message associated with the draft (the message being distributed or replied to).
$mhdist
Set by dist to tell the whatnowproc that message redistribution is occurring.
$mheditor
Set to tell the whatnowproc your choice of editor (unless overridden by −noedit).
$mhuse
May be set by comp.
$mhmessages
$mhannotate
$mhinplace
Set by dist, forw, and repl if annotations are to occur. The reason for this is that the MH user can select any program as the whatnowproc, including one of the standard shells. As a result, it is not possible to pass information by way of an argument list.
$mhfolder: the folder containing the alternate message
Set by dist and repl during edit sessions, so you can read other messages in the current folder besides the one being distributed or replied to. The $mhfolder envariable is also set by show, prev, and next for use by mhl.
Context
In previous versions of MH, the current-message value of a writable folder was kept in a file called cur in the folder itself. In mh.3, the .mh_profile contained the current-message values for all folders, regardless of their writability. In all versions of MH since MH.4, the .mh_profile contains only static information, which MH programs will not update. Changes in context are made to the context file kept in the user’s MH directory. This includes, but is not limited to, the Current-Folder entry and all private sequence information. Public sequence information is kept in a file called .mh_sequences in each folder.
The .mh_profile may override the path of the context file, by specifying a context entry (this must be in lower-case). If the entry is not absolute (does not start with a slash (/), it is interpreted relative to the user’s MH directory. As a result, you can actually have more than one set of private sequences by using different context files.
Restrictions
The shell quoting conventions are not available in the .mh_profile. Each token is separated by white space.
There is some question as to what kind of arguments should be placed in the profile as options. In order to provide a clear answer, recall command line semantics of all MH programs: conflicting switches (for example, −header and −noheader) may occur more than one time on the command line, with the last switch taking effect. Other arguments, such as message sequences, filenames, and folders, are always remembered on the invocation line and are not superseded by following arguments of the same type. Hence, it is safe to place only switches (and their arguments) in the profile.
If you find that an MH program is being invoked again and again with the same arguments, and those arguments are not switches, there are a few possible solutions to this problem.
The first is to create a (symbolic) link in your $HOME/bin directory to the MH program of your choice. By giving this link a different name, you can create a new entry in your profile and use an alternate set of defaults for the MH command.
Similarly, you could create a small shell script which calls the MH program of your choice with an alternate set of invocation line switches. Using links and an alternate profile entry is preferable to this solution.
Finally, if you are a csh user, you could create an alias for the command of the form:
alias cmd cmd arg1 arg2 ...
In this way, you can avoid typing lengthy commands to the shell and still give MH commands safely. Remember that some MH commands invoke others and that, in all cases, the profile is read. This means that aliases are disregarded beyond an initial command invocation.
Files
$HOME/.mh_profile
The user profile or $MH rather than the standard profile
<mh−dir>/context
The user context or $CONTEXT rather than the standard context
<folder>/.mh_sequences
Public sequences for <folder>