Environment Variables
All configuration values can be overridden from the command line by setting the
corresponding environment variable. Because many operating systems restrict
environment variables to be alphanumeric characters or _, the configuration
key needs to be formatted slightly differently to the normal foo.bar.baz form.
Variables starting with MDBOOK_ are used for configuration. The key is created
by removing the MDBOOK_ prefix and turning the resulting string into
kebab-case. Double underscores (__) separate nested keys, while a single
underscore (_) is replaced with a dash (-).
For example:
MDBOOK_foo->fooMDBOOK_FOO->fooMDBOOK_FOO__BAR->foo.barMDBOOK_FOO_BAR->foo-barMDBOOK_FOO_bar__baz->foo-bar.baz
So by setting the MDBOOK_BOOK__TITLE environment variable you can override the
book’s title without needing to touch your book.toml.
Note: To facilitate setting more complex config items, the value of an environment variable is first parsed as JSON, falling back to a string if the parse fails.
This means, if you so desired, you could override all book metadata when building the book with something like
$ export MDBOOK_BOOK='{"title": "My Awesome Book", "authors": ["Michael-F-Bryan"]}' $ mdbook build
The latter case may be useful in situations where mdbook is invoked from a
script or CI, where it sometimes isn’t possible to update the book.toml before
building.