(copié d' une de mes réponses sur SF )
La hostnamecommande renvoie les résultats de DNS et /etc/hosts.  
hostnameest équivalent à uname -net est le "nom d'hôte" ou "nom de noeud " réel de la boîte. 
Tous les autres hostnamearguments utilisent ce nom de nœud pour rechercher des informations.
Donc, avant d'aller plus loin, je devrais expliquer le /etc/hostsformat du fichier. 
Le premier champ est assez évident, c'est l'adresse IP à laquelle tous les noms d'hôtes sur la ligne doivent se résoudre. Le deuxième champ est le nom d'hôte principal pour cette IP. Les champs restants sont des alias.
Donc, si vous l'exécutez, hostname -fil essaiera d'abord de résoudre l'IP de votre nom de nœud. Selon la façon dont vous avez hosts:configuré l' entrée configurée dans /etc/nsswitch.confcette méthode, cela peut varier.  
- Si vous l'avez configuré pour utiliser DNS, il utilisera les domaines de recherche configurés /etc/resolv.confjusqu'à ce qu'il récupère une IP du DNS.
- Si vous l'avez configuré pour utiliser des fichiers, il recherchera /etc/hostsune ligne où le nom d'hôte principal ou le nom d'alias est votre nom de nœud actuel (uname -n), puis renverra l'adresse IP dans cette ligne.
Une fois qu'il a l'IP, il essaiera alors une recherche inversée sur cette IP. Encore une fois, il utilisera DNS pour cela et votre fichier d'hôtes en fonction de votre nsswitch.conf. Dans le cas de l'utilisation de votre fichier d'hôtes, il renverra l'entrée principale (qui est le premier champ après l'IP dans le fichier).
hostname -ane fonctionnera qu'avec le fichier hosts, car une recherche inversée dans DNS ne vous donne qu'un résultat. Avec le fichier hosts, il renvoie les alises dans la ligne correspondante (qui est tout après la première entrée, le nom d'hôte principal).
 
En bref, la raison probable de votre problème est que vous n'avez aucune entrée /etc/hostscontenant votre nom d'hôte ( uname -n).
Exemples
 
Si votre nom de nœud est 'foobar' et que vous avez une entrée /etc/hostscomme celle-ci:
127.0.0.1 foobar.example.com foobar localhost.localdomain localhost
Ensuite, vous obtiendrez les résultats de commande suivants:
# hostname
foobar
# uname -n
foobar
# hostname -f
foobar.example.com
# hostname -a
foobar localhost.localdomain localhost