murex Shell Docs

Command Reference: private

Define a private function block


private defines a function who's scope is limited to that module or source file.

Privates cannot be called from one module to another (unless they're wrapped around a global function) and nor can they be called from the interactive command line. The purpose of a private is to reduce repeated code inside a module or source file without cluttering up the global namespace.


private: name { code-block }


# The following cannot be entered via the command line. You need to write
# it to a file and execute it from there.

private hw {
    out "Hello, World!"

function tom {
    out "My name is Tom."

function dick {
    out "My name is Dick."

function harry {
    out "My name is Harry."


Allowed characters

Private names can only include any characters apart from dollar ($). This is to prevent functions from overwriting variables (see the order of preference below).

Undefining a private

Because private functions are fixed to the source file that declares them, there isn't much point in undefining them. Thus at this point in time, it is not possible to do so.

Order of preference

There is an order of precedence for which commands are looked up:

  1. test and pipe functions because they alter the behavior of the compiler
  2. Aliases - defined via alias. All aliases are global
  3. murex functions - defined via function. All functions are global
  4. private functions - defined via private. Private's cannot be global and are scoped only to the module or source that defined them. For example, You cannot call a private function from the interactive command line
  5. variables (dollar prefixed) - declared via set or let
  6. auto-globbing prefix: @g
  7. murex builtins
  8. external executable files

See Also

This site's content is rebuilt automatically from murex's source code after each merge to the master branch. Downloadable murex binaries are also built with the website.

Last built on Thu May 26 22:49:43 UTC 2022 against commit 59e27bb59e27bb1013043fc4a940cf9a2767c63f31dad2c.

Current version is 2.8.2100 which has been verified against 15889 tests cases.