diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
index 372f5f8f7c..dd3553aa18 100644
--- a/man/systemd.unit.xml
+++ b/man/systemd.unit.xml
@@ -1904,34 +1904,31 @@
WantedBy=
RequiredBy=
- This option may be used more than once, or a
- space-separated list of unit names may be given. A symbolic
- link is created in the .wants/ or
- .requires/ directory of each of the
- listed units when this unit is installed by systemctl
- enable. This has the effect that a dependency of
- type Wants= or Requires=
- is added from the listed unit to the current unit. The primary
- result is that the current unit will be started when the
- listed unit is started. See the description of
- Wants= and Requires= in
- the [Unit] section for details.
+ This option may be used more than once, or a space-separated list of unit names may
+ be given. A symbolic link is created in the .wants/ or
+ .requires/ directory of each of the listed units when this unit is installed by
+ systemctl enable. This has the effect of a dependency of type
+ Wants= or Requires= being added from the listed unit to the
+ current unit. The primary result is that the current unit will be started when the listed unit is
+ started, see the description of Wants= and Requires= in the
+ [Unit] section for details.
- WantedBy=foo.service in a service
- bar.service is mostly equivalent to
- Alias=foo.service.wants/bar.service in the
- same file. In case of template units listing non template units,
- systemctl enable must be called with an
- instance name, and this instance will be added to the
- .wants/ or
- .requires/ list of the listed unit. E.g.
- WantedBy=getty.target in a service
- getty@.service will result in
- systemctl enable getty@tty2.service
- creating a
- getty.target.wants/getty@tty2.service
- link to getty@.service.
-
+ In case of template units listing non template units, the listing unit must have
+ DefaultInstance= set, or systemctl enable must be called with
+ an instance name. The instance (default or specified) will be added to the
+ .wants/ or .requires/ list of the listed unit. For example,
+ WantedBy=getty.target in a service getty@.service will result
+ in systemctl enable getty@tty2.service creating a
+ getty.target.wants/getty@tty2.service link to
+ getty@.service. This also applies to listing specific instances of templated
+ units: this specific instance will gain the dependency. A template unit may also list a template
+ unit, in which case a generic dependency will be added where each instance of the listing unit will
+ have a dependency on an instance of the listed template with the same instance value. For example,
+ WantedBy=container@.target in a service monitor@.service will
+ result in systemctl enable monitor@.service creating a
+ container@.target.wants/monitor@.service link to
+ monitor@.service, which applies to all instances of
+ container@.target.
diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh
index 4117436462..3aa61222a8 100644
--- a/test/test-systemctl-enable.sh
+++ b/test/test-systemctl-enable.sh
@@ -324,6 +324,31 @@ test ! -h "$root/etc/systemd/system/services.target.wants/templ1@333.service"
test ! -h "$root/etc/systemd/system/services.target.wants/templ1@one.service"
test ! -h "$root/etc/systemd/system/services.target.wants/templ1@two.service"
+: -------template enablement for another template-------------
+cat >"$root/etc/systemd/system/templ2@.service" <"$root/etc/systemd/system/link4.service" <&2; exit 1; }
+: -------specifiers in WantedBy-------------------------------
+# We don't need to repeat all the tests. Let's do a basic check that specifier
+# expansion is performed.
+
+cat >"$root/etc/systemd/system/some-some-link7.socket" <