Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

chmod(1)

mh(1)

environ(5)

mh_profile(4)  —  File Formats

NAME

mh_profile − User customization for MH message system

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 static 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

In addition, MH keeps information about changes in context (for example, the current folder and message) in the context file, which is normally located in the user’s Mail directory.  MH also consults a number of environment variables.  Both the context file entries and these environment variables are described in this reference page. 

Profile File Entries

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, the default value is given in parentheses ( ) at the end of each entry. 

When giving path names, <mh-dir> is used to indicate the user’s Mail directory.  This is the directory given by the Path entry in the user’s profile, and is set up initially by MH to be $HOME/Mail. 

Path: pathname
Locates MH transactions in the named directory. If the directory path name is not absolute (does not begin with a / ), it is assumed to begin in the user’s home directory.  When you first use MH, it creates a directory called Mail in your home directory, and adds the appropriate entry to the .mh_profile. 
(no default)

Context: context
Declares the location of the MH context file.
(default: <mh−dir>/context)

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. 
(no default)

Sequence-Negation: not
Defines the string which, when prefixed to a sequence name, negates that sequence. Hence, the argument notseen means all those messages that are not a member of the sequence seen. 
(no default)

Unseen-Sequence: unseen
Names the sequences which should be defined as those messages recently incorporated by inc.  The show command removes 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. 
(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.
(default: .mh_sequences)

Editor: /usr/ucb/vi
Defines editor to be used by comp(1), dist(1), forw(1), and repl(1). 
(default: prompter)

Msg−Protect: 600
Defines octal protection bits for message files. See chmod(1) for an explanation of the octal number. 
(default: 0600)

Folder−Protect: 700
Defines protection bits for folder directories. See chmod(1) for an explanation of the octal number. 
(default: 0700)

command: options
Sets options to be used whenever an MH command is invoked. You should only set up options in your profile, not arguments (options are usually introduced by a dash -).  You can override the options set up in the .mh_profile by giving an option on the command line.  For example, you could override the Editor profile component when replying to messages by typing the command:

% repl −editor /bin/ed

(no default)

Aliasfile: filename
Defines the alias file to be used by MH commands which take the −alias option.  The named file must be in the correct format; see mh-alias(4). 
(no default)

-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 at the  What now? prompt, then nexteditor is used. 
(no default)

mhe: If present, tells inc to compose an Emacs audit file in addition to its other tasks. 
(no default)

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 host names listed should be the official host names 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. 
(default: your user-id)

Draft−Folder: +folder
Specifies the name of the draft folder. This is used by comp, dist, forw, and repl to construct draft messages in, and to store unsent draft messages.  A draft folder allows you to have more than one unsent draft at a time.  The draft folder is conventionally called +drafts. 
(no default)

MailDrop: .mail
Tells inc your maildrop, if different from the default.  This is superseded by the $MAILDROP environment variable. 
(default: /usr/spool/mail/$USER)

Signature:
Tells send your mail signature.  This is superseded by the $SIGNATURE environment variable.  The signature must be enclosed in double quotes (" "). 
(no default)

The following profile elements are used whenever an MH program invokes some other program such as more(1).  The .mh_profile can be used to select alternative programs if the user wishes.  The default values are as follows:

fileproc:       /usr/bin/mh/refile
incproc:        /usr/bin/mh/inc
installproc:    /usr/lib/mh/install−mh
lproc:          /usr/ucb/more
mailproc:       /usr/bin/mh/mhmail
mhlproc:        /usr/lib/mh/mhl
moreproc:       /usr/ucb/more
mshproc:        /usr/bin/mh/msh
packproc:       /usr/bin/mh/packf
postproc:       /usr/lib/mh/post
rmmproc:         none
rmfproc:        /usr/bin/mh/rmf
sendproc:       /usr/bin/mh/send
showproc:       /usr/ucb/more
whatnowproc:    /usr/bin/mh/whatnow
whomproc:       /usr/bin/mh/whom

Context File Entries

Changes in context are made to the context file kept in the users Mail directory.  This includes, but is not limited to, the Current-Folder entry, and all private sequence information.  Information kept in the context file is updated by MH programs as they are used; the .mh_profile contains only static information, which MH programs do not update. 

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 /), then it is interpreted relative to the user’s Mail directory. 

Private sequence information is kept in the context file.  Public sequence information is kept in a file called .mh_sequences in each folder. 

The context file may contain the following components:

Current-Folder: folder
Keeps track of the current open folder.
(default: +inbox)

atr−seq−folder: 172 178−181 212
Keeps track of the private sequence called seq in the specified folder. 
(no default)

Folder-Stack: folders
The contents of the folder-stack for the folder command. 
(no default)

digest−issue−list: 1
Tells forw the last issue of the last volume sent for the digest list. 
(no default)

digest−volume−list: 1
Tells forw the last volume sent for the digest list. 
(no default)

Environment Variables

In addition to the .mh_profile and context files, MH programs consult a number of environment variables. 

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 /), it will be presumed to start from the current working directory.  This is one of the very few exceptions in MH where non-absolute pathnames are not considered relative to the user’s Mail directory. 

Similarly, if you define the environment variable $MHCONTEXT, you can specify a context other than the normal context file (as specified in the .mh_profile).  Unless the value of $MHCONTEXT is absolute, it will be presumed to start from your Mail directory. 

MH programs also consult the following environment variables:

$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 environment variable is also consulted.  In particular, these two environment variables 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 environment variables are set by MH programs for whatnowproc.  These are:

$editalt The alternative message.  Set by dist and repl during edit sessions so you can view the message being distributed or replied to.  The message is also available through a link called @ in the current directory, as long as your current working directory has write permission.  If your current working directory and the folder containing the message are on the same file system, this link is a hard link; otherwise, it is a symbolic link. 

$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 via an argument list. 

$mhfolder
The folder containing the alternate message. Set by dist and repl during edit sessions so you can view other messages in the current folder, besides the one being distributed or replied to.  The $mhfolder environment variable is also set by show, prev, and next for use by mhl. 

RESTRICTIONS

The shell quoting conventions are not available in the .mh_profile.  Each token is separated by white space. 

It is recommended that you only set up options to MH commands (and their values) in the .mh_profile.  Arguments such as file names, folders, and message sequences should not be included in profile entries. 

When conflicting options are given to MH commands, the last option takes effect; earlier options are discarded.  This means that you can override an option you have set up in your .mh_profile by giving a conflicting option at the command line.  Other arguments, such as file names, folders, or message sequences, are always remembered, and are not superseded by later arguments of the same kind.  Hence it is unwise to give arguments of this kind in your .mh_profile.  (Files and folders can be included in the .mh_profile as values to options, for example, −draftfolder +drafts.  They should not be included when they stand as independent arguments to the command.) 

If you find that an MH program is being invoked again and again with the same arguments (and these are not options), there are several possible solutions. 

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 /usr/bin/mh/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.

<mh−dir>/context
The user’s context file.

folder/.mh_sequences
Public sequences for a particular folder.

RELATED INFORMATION

chmod(1), mh(1), environ(5)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026