On Ubuntu the hostname is stored in both the /etc/hosts and /etc/hostname files. There are several ways that we can change the hostname in these files.
1. Manually Edit the hostname
We can manually edit these files using a basic text editor like nano:
sudo nano /etc/hosts sudo nano /etc/hostname
In /etc/hostname simply overwrite the existing hostname with a new one. In /etc/hosts you will find the hostname on the line beginning 127.0.0.1 – overwrite only the hostname with the new one, and then reboot.
2. Use sed to change the hostname
Another way to achieve the same goal is to use the sed command to replace the existing hostname with a new one.
For example, my Ubuntu Server has the default hostname of ‘ubuntu’.
Use the hostname command to check what your hostname is.
With sed we can look for our hostname (in /etc/hosts and /etc/hostname) and then replace it with the desired new-hostname:
sudo sed -i 's/ubuntu/new-hostname/g' /etc/hosts sudo sed -i 's/ubuntu/new-hostname/g' /etc/hostname
3. Write a Bash Script
It’s always handy to have a script to do things – so here is a quick bash script that I put together that uses sed to change the hostname and then reboot:
#!/bin/bash #Assign existing hostname to $hostn hostn=$(cat /etc/hostname) #Display existing hostname echo "Existing hostname is $hostn" #Ask for new hostname $newhost echo "Enter new hostname: " read newhost #change hostname in /etc/hosts & /etc/hostname sudo sed -i "s/$hostn/$newhost/g" /etc/hosts sudo sed -i "s/$hostn/$newhost/g" /etc/hostname #display new hostname echo "Your new hostname is $newhost" #Press a key to reboot read -s -n 1 -p "Press any key to reboot" sudo reboot