Shell variable expansion in git config

You can’t. git-config(1) does not support environment variable expansion, but only limited type conversion and path expansion:

The type specifier can be either –int or –bool, to make git config ensure that the variable(s) are of the given type and convert the value to the canonical form (simple decimal number for int, a “true” or “false” string for bool), or –path, which does some path expansion (see –path below). If no type specifier is passed, no checks or transformations are performed on the value.

The documentation for --path states:

–path

git-config will expand leading ~ to the value of $HOME, and ~user to the home directory for the specified user. This option has no effect when setting the value (but you can use git config bla ~/ from the command line to let your shell do the expansion).

The term “expansion” does not appear in any different context in git-config(1). So how did you even get the idea that it should, given that no such feature is documented anywhere?

In order to expand environment variables you have to pre-process the Git config file yourself, i.e. by creating a template file, and expand variables with a script before copying the file to your $HOME directory.

If it’s about dotfile management, then do, what all people do: Put them in a directory, and add symlinks to this directory from your $HOME.

Leave a Comment