Scroll to navigation

MHPATH(1mh) [mmh-0.4] MHPATH(1mh)


mhpath - print full pathnames of mh messages and folders


mhpath [+folder] [msgs] [-Version] [-help]


mhpath expands and sorts the message list `msgs' and writes the full pathnames of the messages to the standard output separated by newlines. If no `msgs' are specified, mhpath outputs the current mail folder's pathname instead. If the only argument is `+', your mail storage location (`Path') is output; this can be useful in shell scripts.

Contrasted with other mmh commands, a message argument to mhpath may often be intended for writing. Because of this:

the name `b' has been added to mhpath's list of reserved message names (the others are `f', `l', `p', `n', `c', and `a'). The `b' (beyond) message is equivalent to the message after the last message in a folder (and equivalent to 1 in a folder without messages). The `b' message may not be used as part of a message range.
Within a message list, the following designations may refer to messages that do not exist: a single numeric message name, the single message name `c', and (obviously) the single message name `b'. All other message designations must refer to at least one existing message, if the folder contains messages.
An empty folder is not in itself an error.

Message numbers greater than the highest existing message in a folder as part of a range designation are replaced with the next free message number.

Examples: The current folder foo contains messages 3 5 6. Cur is 4.

% mhpath
% mhpath a
% mhpath 2001
% mhpath 1-2001
% mhpath b
% mhpath l b
% mhpath l-b
bad message list `l-b'.
% mhpath c
% mhpath 1-2
no messages in range `1-2'.
% mhpath f:2
% mhpath 1 2

mhpath is also useful in back-quoted operations:

% cd `mhpath +inbox`
% echo `mhpath +`


^$HOME/.mmh/profile~^The user profile


^Path:~^To determine the user's mail storage
^Current-Folder:~^To find the default current folder




`+folder' defaults to the current folder
`msgs' defaults to none




Like all mmh commands, mhpath expands and sorts [msgs]. So don't expect

mv `mhpath 501 500`

to move 501 to 500. Quite the reverse. But

mv `mhpath 501` `mhpath 500`

will do the trick.

Out of range message 0 is treated far more severely than large out of range message numbers.

2019-01-06 MH.6.8