Sans vouloir polémiquer, /etc/hosts ne contient pas le hostname. Ce fichier sert à la résolution des noms en adresses IP. Il est consulté en dernier recours après l'accès à un DNS (domain name server). Ce fichier existe également (avec la même fonction) sous Windows, mais situé à un endroit nettement moins accessible (
C:\WINDOWS\system32\drivers\etc\hosts). C'est ce fichier qui contient notamment la résolution de localhost en 127.0.0.1.
Le fichier hosts de ma machine Fedora 15 (original non modifié depuis l'installation):
[root@auguste backup]# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
Ce fichier peut contenir le hostname incidemment (pour faciliter sa résolution). C'est le cas sur mon PC sous Ubuntu 11.11 et voici un exemple d'utilisation:
jacques@naxos:~$ ping -c 1 $(hostname)
PING naxos.thoorens.net (192.168.1.2) 56(84) bytes of data.
64 bytes from naxos.thoorens.net (192.168.1.2): icmp_req=1 ttl=64 time=0.052 ms
--- naxos.thoorens.net ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.052/0.052/0.052/0.000 ms
Même exemple sur la machine Fedora 15 dont le fichier hosts ne contient pas le hostname (et qui est pourtant bien mémorisé quelque part, puisque la commande hostname renvoie le bon résultat):
[root@auguste backup]# ping -c 1 $(hostname)
ping: unknown host auguste.localnet.eci
Par contraste, localhost est bien compris:
[root@auguste backup]# ping -c 1 localhost
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost.localdomain (127.0.0.1): icmp_req=1 ttl=64 time=0.029 ms
--- localhost.localdomain ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.029/0.029/0.029/0.000 ms
Explications complémentaires