**hostname** - set or print name of current host system
The //hostname// utility prints the name of the current host. The super-user (root) can set the hostname by supplying an argument.
For FreeBSD, if you wish to make changes permanent, you'd need also need to edit **/etc/rc.conf**
For Linux, it will depend on the distro you're using. Latest versions of Ubuntu, CentOS, Debian, Fedora, and so on, will come with //systemd//, a system and service manager that provides a **hostnamectl** command to manage hostnames in Linux.
If you're root already, you can change your hostname by typing:
$ hostnamectl set-hostname MY_NEW_HOSTNAME
Otherwise,
$ hostnamectl set-hostname MY_NEW_HOSTNAME
For older Linux edit the hostname file, **/etc/hostmame**
Once this is done, add another record for the hostname in **/etc/hosts**
For example
127.0.0.1 host1-linux-node
After this, you'd need to execute the following command:
**/etc/init.d/hostname restart**
If you're using CentOS-based system that use init, the hostname is changed by modifying, **/etc/sysconfig/network** file
Here's the snippet from that file:
$ cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME="host1-legacy-linux-node"
GATEWAYDEV=ens160
GATEWAY=192.168.10.1
FORWARD_IPV4="yes"
To make changes permament, change the value next to **"HOSTNAME"** to the one of your desired hostname.