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-address— adres 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.