Go to the first, previous, next, last section, table of contents.

## Expansions in administrative files

Sometimes in writing an administrative file, you might want the file to be able to know various things based on environment CVS is running in. There are several mechanisms to do that.

To find the home directory of the user running CVS (from the `HOME` environment variable), use ``~'` followed by ``/'` or the end of the line. Likewise for the home directory of user, use ``~user'`. These variables are expanded on the server machine, and don't get any resonable expansion if pserver (see section Direct connection with password authentication) is in used; therefore user variables (see below) may be a better choice to customize behavior based on the user running CVS.

One may want to know about various pieces of information internal to CVS. A CVS internal variable has the syntax `${variable}`, where variable starts with a letter and consists of alphanumberic characters and ``_'`. If the character following variable is a non-alphanumeric character other than ``_'`, the ``{'` and ``}'` can be omitted. The CVS internal variables are:

`CVSROOT`
  This is the value of the CVS root in use. See section The Repository, for a description of the various ways to specify this.
`RCSBIN`
  This is the value CVS is using for where to find RCS binaries. See section Global options, for a description of how to specify this.
`CVSEDITOR`
`VISUAL`
`EDITOR`
  These all expand to the same value, which is the editor that CVS is using. See section Global options, for how to specify this.
`USER`
  Username of the user running CVS (on the CVS server machine).

If you want to pass a value to the administrative files which the user that is running CVS can specify, use a user variable. To expand a user variable, the administrative file contains `${=variable}`. To set a user variable, specify the global option ``-s'` to CVS, with argument `variable=value`. It may be particularly useful to specify this option via ``.cvsrc'` (see section Default options and the ~/.cvsrc file).

For example, if you want the administrative file to refer to a test directory you might create a user variable `TESTDIR`. Then if CVS is invoked as `cvs -s TESTDIR=/work/local/tests`, and the administrative file contains `sh ${=TESTDIR}/runtests`, then that string is expanded to `sh /work/local/tests/runtests`.

All other strings containing ``$'` are reserved; there is no way to quote a ``$'` character so that ``$'` represents itself.

Go to the first, previous, next, last section, table of contents.