Ubuntu: How do I change the hostname without a restart?


I want to change the OS hostname but I do not want to restart.

I have edited /etc/hostname but it requires a restart to get implemented. How to avoid this?


It's easy. Just click the Gear icon (located at upper right corner of the screen), open "About this computer" screen (located at Gear icon ) and edit "Device name".

Or, in a terminal, use the following command:

sudo hostname your-new-name  

This will set the hostname to your-new-name until you restart. See man hostname and How do I change the computer name? for further information. Do not use _ in your name.


After a restart your changes in /etc/hostname will be used, so (as you said in the question), you should still use

sudo -H gedit /etc/hostname  

(or some other editor) so that file contains the hostname.

To test that the file is set up correctly, run:

sudo service hostname start  

You should also edit /etc/hosts and change the line which reads:     your-old-hostname  

so that it now contains your new hostname. (This is required otherwise many commands will cease functioning.)


Ubuntu 13.04 onwards

The hostnamectl command is part of the default installation on both Desktop and Server editions.

It combines setting the hostname via the hostname command and editing /etc/hostname. As well as setting the static hostname, it can set the "pretty" hostname, which is not used in Ubuntu. Unfortunately, editing /etc/hosts still has to be done separately.

hostnamectl set-hostname new-hostname  

This command is part of the systemd-services package (which, as of Ubuntu 14.04, also includes the timedatectl and localectl commands). As Ubuntu migrates to systemd, this tool is the future.


Without Restart

Changing the hostname or computer name in ubuntu without restart

Edit /etc/hostname and change to the new value,

nano /etc/hostname   

Edit /etc/hosts and change the old line to your new hostname   localhost   ubuntu.local    ubuntu   # change to your new hostname/fqdn  

Note : i have read it on a forum > Edit /etc/hosts and change the old line to your new hostname (if you dont do this, you wont be able to use sudo anymore. If you hav e already done it, press ESC on the grub menu, choose recovery, and edit your host file to the correct settings)

Now after a reboot, your hostname will be the new one you chose

Without Reboot

To change without a reboot, you can just use hostname.sh after you edit /etc/hostname. You must keep both your host names in /etc/hosts ( newhost oldhost) until you execute the command below:

sudo service hostname start  

Note : Above command to make the change active. The hostname saved in this file (/etc/hostname) will be preserved on system reboot (and will be set using the same service).


The default name was set when you were installing Ubuntu. You can easily change it to whatever you want in both Desktop & Server by editing the hosts and hostname files. Below is how:

  1. Press CtrlAltt on keyboard to open the terminal. When it opens, run the below command: sudo hostname NEW_NAME_HERE

This will change the hostname until next reboot. The change won’t be visible immediately in your current terminal. Start a new terminal to see the new hostname.

  1. To change the name permanently, run command to edit the host files:

    sudo -H gedit /etc/hostname and sudo -H gedit /etc/hosts

For Ubuntu server without a GUI, run sudo vi /etc/hostname and sudo vi /etc/hosts and edit them one by one. In both files, change the name to what you want and save them.

Finally, restart your computer to apply the changes.


Here is a script that changes the hostname in the prescribed way. It ensures that not only sudo but also X11 applications continue to function with no restart required.

Usage: sudo ./change_hostname.sh new-hostname

#!/usr/bin/env bash  NEW_HOSTNAME=$1  echo $NEW_HOSTNAME > /proc/sys/kernel/hostname  sed -i 's/*/\t'"$NEW_HOSTNAME"'/g' /etc/hosts  echo $NEW_HOSTNAME > /etc/hostname  service hostname start  su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"  


Without restart:

  1. change hostname in /etc/hostname
  2. update /etc/hosts accordingly
  3. sudo sysctl kernel.hostname=mynew.local.host

Check your current hostname with hostname -f


To get your current hostname:

cat /etc/hostname  

This can be changed in any text editor. You would also need to update entry other than localhost against in /etc/hosts.


sudo hostname your-new-name  sudo /etc/init.d/networking restart  

That should do the job I think


  1. Replace the contents of /etc/hostname with the desired hostname (you can edit with sudo nano /etc/hostname)
  2. In /etc/hosts, replace the entry next to with the desired hostname (you can edit with sudo nano /etc/hosts)
  3. Execute sudo service hostname restart; sudo service networking restart


I have read the answers, But I think Probably you are looking for this:

Just execute these two commands after editing the /etc/hostname file.

$ sudo service hostname restart  $ exec bash  

That's all. No need to restart.Also make sure you also change the name in /etc/hosts file.


Ubuntu 16.04

This is without restart and without any terminal use.

  • Go to System Settings -> Details.
  • There it is. Beside Device name, there is a text-box.
  • Edit text-box and close window.

Open terminal. See for yourselves.

(For older versions, the text-box is not editable.)

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Next Post »