diff --git a/man/environment.d.xml b/man/environment.d.xml
index 70dc40c56c..0b00296d6e 100644
--- a/man/environment.d.xml
+++ b/man/environment.d.xml
@@ -68,13 +68,33 @@
${FOO:+ALTERNATE_VALUE}
to expand to ALTERNATE_VALUE as long as
${FOO} would have expanded to a non-empty value.
+ You can escape a literal dollar sign $ by doubling it, as in
+ $$.
+
+ A backslash character \ followed by a newline acts as a line
+ continuation (both characters are discarded); in all other cases, the backslash is consumed and
+ the following character is included literally in the value. This can be used to preserve
+ leading/trailing whitespace or include literal backslashes.
+
+ You may optionally enclose the right hand side of assignments in pairs of either
+ 'single quotes' or "double
+ quotes"; these will be stripped from the value before saving it. Using
+ either quoting style does not affect variable expansion; however, single quotes disable
+ backslash escaping entirely, while double quoting removes backslashes that precede double quotes
+ ", dollar signs $, backslashes \,
+ backticks `, and newlines, and leaves all other backslashes in place.
+
+ Leading and trailing whitespace characters are stripped from both the left and right hand
+ sides of the assignment. To preserve such spaces in the value, you can either enclose the entire
+ value in quotes, or escape the space characters with backslashes. You can also include literal
+ newlines in the value by enclosing it in quotes.
+
+ Each KEY must be a valid variable name. Empty lines and lines
+ beginning with the comment characters # or ; are ignored.
No other elements of shell syntax are supported.
- Each KEY must be a valid variable name. Empty lines
- and lines beginning with the comment character # are ignored.
-
- Example
+ Examples
Setup environment to allow access to a program installed in
/opt/foo
@@ -82,10 +102,39 @@
/etc/environment.d/60-foo.conf:
- FOO_DEBUG=force-software-gl,log-verbose
- PATH=/opt/foo/bin:$PATH
- LD_LIBRARY_PATH=/opt/foo/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
- XDG_DATA_DIRS=/opt/foo/share:${XDG_DATA_DIRS:-/usr/local/share/:/usr/share/}
+FOO_DEBUG=force-software-gl,log-verbose
+PATH=/opt/foo/bin:$PATH
+LD_LIBRARY_PATH=/opt/foo/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
+XDG_DATA_DIRS=/opt/foo/share:${XDG_DATA_DIRS:-/usr/local/share/:/usr/share/}
+
+
+
+
+ Escaping and variable expansion
+
+ /etc/environment.d/70-bar.conf:
+
+
+# A comment
+test_var=(variable)
+; Another comment
+test_comment=value # This is a part of the variable, and not a comment!
+
+test_none= \ before\
+after "" '' \${test_var}
+test_double=" \ before\
+after "" '' \${test_var}"
+test_single=' \ before\
+after "" '' \${test_var}'
+
+# The above example produces the following environment variables, written using
+# C-style string escapes:
+#
+# test_var="(variable)"
+# test_comment="value # This is a part of the variable, and not a comment!"
+# test_none=" beforeafter \"\" '' (variable)"
+# test_double=" \\ beforeafter '' (variable)"
+# test_single=" \\ before\\\nafter \"\" \\(variable)"