First case:
env
/etc/hostname
bidule
/etc/hosts
127.0.0.1 localhost.localdomain localhost
result
jean-michel@ bidule ~ % hostname
bidule
jean-michel@ bidule ~ % hostname -d
(none)
jean-michel@ bidule ~ % hostname -f
bidule
jean-michel@ bidule ~ % hostname -s
bidule
Second case:
env
/etc/hostname
bidule
/etc/hosts
127.0.0.1 localhost.localdomain localhost bidule
result
jean-michel@ bidule ~ % hostname
bidule
jean-michel@ bidule ~ % hostname -d
localdomain
jean-michel@ bidule ~ % hostname -f
localhost.localdomain
jean-michel@ bidule ~ % hostname -s
localhost
Third case:
env
/etc/hostname
bidule
/etc/hosts
127.0.0.1 localhost.localdomain localhost
127.0.1.1 bidule.family.home bidule
result
jean-michel@ bidule ~ % hostname
bidule
jean-michel@ bidule ~ % hostname -d
family.home
jean-michel@ bidule ~ % hostname -f
bidule.family.home
jean-michel@ bidule ~ % hostname -s
bidule
The question now is which one is correct?
My own opinion the /etc/hosts with a minimal entries for ipv4 and ipv6
127.0.0.1 localhost
::1 localhost
Hostname resolution and everything else should be done outside of this file. I guess that's what systemd does.