hostname

Wyświetla lub ustawia nazwę hosta oraz pokazuje przypisane adresy IP.

hostname to podstawowe narzędzie w Linuksie, które wyświetla lub ustawia nazwę hosta — czyli identyfikator, pod którym Twój system przedstawia się w sieci. Uruchomione bez argumentów wypisuje aktualną nazwę. Z odpowiednimi flagami pokaże też pełną nazwę domenową (FQDN) albo przypisane adresy IP, dlatego adminzy często sięgają po nie do szybkiej diagnozy „kim właściwie jest ta maszyna”.

Składnia i najważniejsze opcje

Podstawowa forma: hostname [opcje] [nowa_nazwa]

  • -I, --all-ip-addresses — wypisuje wszystkie adresy IP przypisane do interfejsów (pomija loopback). Bardzo wygodne, bo nie potrzebuje DNS.
  • -f, --fqdn — pokazuje pełną nazwę domenową, np. serwer.firma.pl.
  • -s, --short — sama krótka nazwa, wszystko po pierwszej kropce ucięte.
  • -d, --domain — wyświetla samą część domenową nazwy.
  • -i, --ip-addressadres IP uzyskany przez rozwiązanie nazwy (zależny od DNS/hosts).
  • -F plik, --file plik — ustawia nazwę hosta z pliku (przydatne w skryptach).

Przykłady użycia

  • hostname — wypisuje bieżącą nazwę hosta. Najprostszy możliwy strzał.
  • hostname -I — pokazuje wszystkie adresy IP maszyny w jednej linii, idealne do sprawdzenia „na czym ja właściwie nasłuchuję”.
  • hostname -f — zwraca pełną nazwę FQDN, jeśli system ma poprawnie skonfigurowaną domenę.
  • sudo hostname serwer-test — ustawia nazwę hosta na serwer-test do najbliższego restartu (zmiana nietrwała).
  • hostname -d — wypisuje samą domenę, np. gdy chcesz zweryfikować przynależność maszyny.

Częste błędy i pułapki

Pierwsza pułapka: ustawienie nazwy przez hostname nazwa nie jest trwałe. Po restarcie wróci stara wartość, bo prawdziwe źródło to plik /etc/hostname (oraz konfiguracja systemd). Na nowoczesnych dystrybucjach z systemd do trwałej zmiany użyj hostnamectl set-hostname nazwa — to zadba o plik i bieżącą sesję naraz.

Druga: ustawienie nazwy wymaga uprawnień roota. Bez sudo dostaniesz odmowę dostępu.

Trzecia: hostname -i potrafi mylić, bo zależy od wpisów w /etc/hosts i DNS — jeśli nazwa wskazuje na 127.0.1.1, dostaniesz właśnie ten adres zamiast realnego IP sieciowego. Do realnych adresów używaj -I.

Uwaga na różnice: na BSD i macOS hostname zachowuje się inaczej i nie ma flagi -I — opis powyżej dotyczy Linuksa (pakiet net-tools).

Powiązane komendy: hostnamectl, hostname -d, dnsdomainname, ip addr, uname -n.