Learn through the super-clean Baeldung Pro experience:
>> Membership and Baeldung Pro.
No ads, dark-mode and 6 months free of IntelliJ Idea Ultimate to start with.
Last updated: March 18, 2024
Each instance of the Linux system is identified by its hostname. This name is not only used when networking but also improves the user experience.
In this tutorial, we’ll take a look at ways to get and set a hostname.
The location for the hostname is file /etc/hostname. Let’s check it directly with cat:
$ cat /etc/hostname
fedora35
So the name of our Linux system is ‘fedora35’.
In addition, we can use hostname for that:
$ hostname
fedora35
And finally, we may put the hostname into the command line prompt, setting the PS1 variable to include the \h placeholder:
$export PS1='\u@\h:\w\$'
joe@fedora35:~$
Let’s just edit the /etc/hostname file to change the hostname. To do that, we should be root or the sudo user. Then, the modification is immediately reflected by the hostname command and isn’t lost after rebooting.
Furthermore, we can use hostname to set the name:
$ sudo hostname fedorabox
$ hostname
fedorabox
However, we’re going to lose this setting after the system restart.
In addition, we need to put the same name into the /etc/hostname file. Otherwise, the discrepancies might lead to the system malfunction.
Finally, if we use the static hostname for networking in the /etc/hosts file, we need to update it accordingly as well.
We should notice that this way of managing the hostname fails when the network configuration comes into play.
For instance, services providing DHCP may change the content of the /etc/hostname file or remove it altogether.
In such a case, hostname returns the name obtained from the service.
We should use hostnamectl for both instant and persistent changes of hostname. Additionally, we may overwrite the name obtained from the network configuration.
The command comes with the systemd package and is backed by an on-demand service.
So let’s check the hostname:
$ hostnamectl hostname
fedorabox
Now, let’s change the name with the set-hostname command to hostnamectl:
$ hostnamectl set-hostname fedora
Finally, let’s check it again:
$ hostnamectl hostname
fedora
$ cat /etc/hostname
fedora
$ hostname
fedora
With this command, we have more types of hostnames at our disposal. We can use additional switches to the set-hostname command:
So let’s try these hostnames:
$ hostnamectl set-hostname --static fedora35
$ hostnamectl set-hostname --pretty "Joe's fedora"
$ hostnamectl set-hostname --transient "fedora"
Hint: static hostname is already set, so the specified transient hostname will not be used.
Let’s notice the remark on setting the transient one. Now, let’s check the result using the same switches as before:
$ hostnamectl --static; hostnamectl --pretty; hostnamectl --transient
fedora35
Joe's fedora
fedora35
Finally, let’s notice that the set-hostname command, without any modifier, changes all three hostnames.
In this article, we learned to manage the system’s hostname.
First, we found the place where the hostname is stored. Then we edited this file to change the hostname. In addition, we retrieved and set the name with the hostname command. Finally, we examined the hostnamectl command, which manages the hostname in the systemd Linux distribution.