(copiado de una de mis respuestas en SF )
El hostnamecomando devuelve resultados de DNS y /etc/hosts.
hostnamees equivalente uname -ny es el "nombre de host" o "nombre de nodo " real de la caja.
Todos los otros hostnameargumentos usan este nombre para buscar información.
Entonces, antes de continuar, debería explicar el /etc/hostsformato del archivo.
El primer campo es bastante obvio, es la dirección IP que todos los nombres de host en la línea deben resolver. El segundo campo es el nombre de host principal para esa IP. Los campos restantes son alias.
Entonces, si lo ejecuta hostname -f, primero intentará resolver la IP para su nombre de nodo. Dependiendo de cómo tenga hosts:configurada la entrada en /etc/nsswitch.confeste método, variará.
- Si lo tiene configurado para usar dns, usará los dominios de búsqueda configurados
/etc/resolv.confhasta que recupere una IP del DNS.
- Si lo tiene configurado para usar archivos, buscará
/etc/hostsuna línea donde el nombre de host principal o el nombre de alias es su nombre de nodo actual ( uname -n), y luego devolverá la dirección IP en esa línea.
Una vez que tenga la IP, intentará una búsqueda inversa en esa IP. Nuevamente usará DNS para esto y su archivo de hosts basado en su nsswitch.conf. En el caso de usar su archivo de hosts, devolverá la entrada principal (que es el primer campo después de la IP en el archivo).
hostname -asolo funcionará con el archivo de hosts, ya que realizar una búsqueda inversa en DNS solo le da 1 resultado. Con el archivo de hosts, devuelve los alises en la línea correspondiente (que es todo después de la primera entrada, el nombre de host principal).
En resumen, la razón probable de su problema es que no tiene ninguna entrada /etc/hostsque contenga su nombre de host ( uname -n).
Ejemplos
Si su nombre de nodo es 'foobar', y tiene una entrada /etc/hostscomo esta:
127.0.0.1 foobar.example.com foobar localhost.localdomain localhost
Entonces obtendrá los siguientes resultados de comando:
# hostname
foobar
# uname -n
foobar
# hostname -f
foobar.example.com
# hostname -a
foobar localhost.localdomain localhost