cm.sh

[Bash script]
  `cm.sh` [`-qnv`] [`-e` editor] [`-l` lisp] [`-P` prefs] [`-O` os] [`-A` arch] [`-F` lisp-flavor] [`-V` version] [`-R` cmroot]

Starts Common Music (cm) either by loading it into a fresh Lisp or Scheme session or by launching an existing Lisp image that has been built with Common Music pre-loaded. Additionally, this process can be run stand-alone in a terminal or as a subprocess of an Emacs-compatible editor such as xemacs(1), emacs(1), or gnuclient(1).

Since the script is designed to autodetect all required parameters at runtime, it should in virtually all cases suffice to call it without any arguments. This autodetection however may be customized or overridden via the following options and environment variables:

`-h`
  Print this help.
`-q`
  Don't run cm, only echo platform as 'os-arch' string.
`-n`
  Dry run.
`-v`
  Be verbose.
`-e` {editor}
  Run under this editor. The value should be a command on your path that starts an Emacs-compatible editor (emacs, xemacs, gnuclient) or a path to the executable. On OS X you can specify 'Emacs' to invoke an Emacs application installed as /Applications/Emacs.app. Default is '<none>'.
`-l` {lisp}
  Run this Lisp/Scheme. The value should be a command on your path or a path to the Lisp executable. Default value is '<unset>'.
`-P` {prefs}
  Preferred runtimes for autodetecting Lisp commands. Default is 'openmcl cmucl acl clisp guile'.
`-O` {os}
  OS in case autodetection fails.
`-A` {arch}
  Machine architecture in case autodetection fails.
`-F` {lisp-flavor}
  Lisp flavor in case autodetection fails.
`-V` {version}
  Lisp version in case autodetection fails.
`-R` {cmroot}
  Common Music root directory in case autodetection fails.

Environment variables:

`CM_EDITOR`
  Name or path of an Emacs-compatible editor under which to run cm, e.g. 'xemacs' or '/usr/bin/gnuclient'. Same as `-e` option.
`CM_RUNTIME`
  Name or path of a Lisp or Scheme system to execute, e.g. 'clisp' or '/usr/bin/openmcl'. Same as `-l` option.
`CM_RUNTIME_PREFS`
  List of `CM_RUNTIME_FLAVORs` to try during autodetection, in order of preference. Same as `-r` option.
`CM_OS`
  Symbolic name of host OS, e.g. 'linux' or 'darwin'. Same as `-O` option.
`CM_ARCH`
  Symbolic name of host architecture, e.g. 'i386' or 'powerpc'. Same as `-A` option.
`CM_RUNTIME_FLAVOR`
  Symbolic name of the Lisp/Scheme flavor to run, e.g. 'clisp' or 'cmucl'. Useful in conjunction with `CM_RUNTIME` or the `-l` option if the flavor can't be derived from the command name or path. Same as `-F` option.
`CM_RUNTIME_VERSION`
  Version of the Lisp/Scheme to run. Useful in conjunction with `CM_RUNTIME` or the `-l` option if the version can't be derived from the command name or path. Same as `-V` option.
`CM_ROOT_DIR`
  Absolute path of the Common Music root directory in case autodetection fails. Same as `-R` option.

For autodetection to work, it is important that the script be not moved from its location inside the Common Music directory tree. A 'cm' (or similar) command in a standard binary location can be easily provided either by creating a symlink (Example 1) or by creating a wrapper shell script (Example 2).

#### Examples:

Example 1. Linking a system-wide command to cm.sh

    % ln -s /path/to/cm/bin/cm.sh /usr/local/bin/cm

Example 2. Wrapper shell script to start cm.sh

    #!/bin/sh
    exec /path/to/cm/bin/cm.sh
    # chmod 755 /usr/local/bin/cm

Requirements: bash(1), cat(1), cut(1), echo(1), head(1), sed(1), sort(1), tr(1), uname(1), which(1); getopts and ls; a working installation of a Lisp or Scheme runtime; the '-repl' option if clisp is used (clisp 2.31 or higher).

#### See Also:

- `make-cm``` [Function]
- Installing Common Music