When you specify a domain
it becomes the first search
domain. This search feature is the main use of setting the domain
so you can get away with only defining a search
entry, most of the time.
Also the domain
can be automatically determined from the host name of the machine, if the host name contains a .
the suffix will become the domain.
The main difference for having a resolv.conf
without a domain
would be local processes trying to determine a fully qualified domain name (FQDN). SMTP servers come to mind initially as something that like to know the local FQDN and can use local host/domain config to work it out. As time goes on the local host name and domain are relied on less and less as it's becoming meaningless to the real world service a machine actually represents due to things like NAT, virtual hosting and load balancers. This means most software now provides alternative configuration options for domain names instead of solely trying to determine them from the local host name.
man resolv.conf
domain Local domain name.
Most queries for names within this domain
can use short names relative to the local domain. If no domain entry
is present, the domain is determined from the local hostname returned
by gethostname(2); the domain part is taken to be everything after the
first '.'. Finally, if the hostname does not contain a domain part,
the root domain is assumed.
search Search list for host-name lookup.
The search list is normally determined from the local domain name; by
default, it contains only the local domain name. This may be changed
by listing the desired domain search path following the search keyword
with spaces or tabs separating the names. Resolver queries having
fewer than ndots dots (default is 1) in them will be attempted using
each component of the search path in turn until a match is found. For
environments with multiple subdomains please read options ndots:n
below to avoid man-in-the-middle attacks and unnecessary traffic for
the root-dns-servers. Note that this process may be slow and will
generate a lot of network traffic if the servers for the listed
domains are not local, and that queries will time out if no server is
available for one of the domains. The search list is currently limited
to six domains with a total of 256 characters.
man resolv.conf
: "domain Local domain name. Most queries for names within this domain can use short names relative to the local domain. If set to '.', the root domain is considered. If no domain entry is present, the domain is determined from the local hostname returned by gethostname(2); the domain part is taken to be everything after the first '.'. Finally, if the hostname does not contain a domain part, the root domain is assumed."