See also appendix on portable
M4sh, pronounced “mash”, is aiming at producing portable Bourne shell scripts. This name was coined by Lars J. Aas, who notes that, according to the Webster’s Revised Unabridged Dictionary (1913):
Mash \Mash\, n. [Akin to G. meisch, maisch, meische, maische, mash, wash, and prob. to AS. miscian to mix. See “Mix”.]
- A mass of mixed ingredients reduced to a soft pulpy state by beating or pressure...
- A mixture of meal or bran and water fed to animals.
- A mess; trouble. [Obs.] –Beau. & Fl.
M4sh reserves the M4 macro namespace ‘^_AS_’ for internal use, and the namespace ‘^AS_’ for M4sh macros. It also reserves the shell and environment variable namespace ‘^as_’, and the here-document delimiter namespace ‘^_AS[A-Z]’ in the output file. You should not define your own macros or output shell code that conflicts with these namespaces.
|• Common Shell Constructs||Portability layer for common shell constructs|
|• Polymorphic Variables||Support for indirect variable names|
|• Initialization Macros||Macros to establish a sane shell environment|
|• File Descriptor Macros||File descriptor macros for input and output|