Default command line options may be set in .stowrc (current directory) or ~/.stowrc (home directory). These are parsed in that order, and are appended together if they both exist. The effect of the options in the resource file is similar to simply prepending the options to the command line. This feature can be used for some interesting effects.
For example, suppose your site uses more than one stow directory, perhaps in order to share around responsibilities with a number of systems administrators. One of the administrators might have the following in their ~/.stowrc file:
--dir=/usr/local/stow2 --target=/usr/local --ignore='~' --ignore='^CVS'
so that the stow
command will default to operating on the
/usr/local/stow2 directory, with /usr/local as the
target, and ignoring vi backup files and CVS directories.
If you had a stow directory /usr/local/stow/perl-extras that was only used for Perl modules, then you might place the following in /usr/local/stow/perl-extras/.stowrc:
--dir=/usr/local/stow/perl-extras --target=/usr/local --override=bin --override=man --ignore='perllocal\.pod' --ignore='\.packlist' --ignore='\.bs'
so that when you are in the /usr/local/stow/perl-extras
directory, stow
will regard any subdirectories as stow
packages, with /usr/local as the target (rather than the
immediate parent directory /usr/local/stow), overriding any
pre-existing links to bin files or man pages, and ignoring some cruft
that gets installed by default.
If an option is provided both on the command line and in a resource file,
the command line option takes precedence. For options that provide a single
value, such as --target
or --dir
, the command line
option will overwrite any options in the resource file. For options that can
be given more than once, --ignore
for example, command line
options and resource options are appended together.
For options that take a file path, environment variables and the tilde
character (~
) are expanded. An environment variable can be
given in either the $VAR
or ${VAR}
form. To
prevent expansion, escape the $
or ~
with a
backslash. Since these values are first subject to standard shell
quoting rules, if you want special characters such as \b
or
$
to be treated as regular expression assertions then they
will need extra escaping, i.e. \\b
and \\\$
respectively.
The options -D
, -S
, and -R
are ignored in
resource files. This is also true of any package names given in the
resource file.