bash 从哪里获取其主机名数据来设置 HOSTNAME 以及如何永久更改它?

bash 从哪里获取其主机名数据来设置 HOSTNAME 以及如何永久更改它?

我知道你可以做这样的事情:

export HOSTNAME=xyz

echo $HOSTNAME

您将看到所做的更改。但是,bash 在启动时从哪里读取以设置此环境变量?我知道您当然可以在 中编写导出语句.bashrc,但这似乎更像是一种变通方法,而不是真正的解决方案。

我也尝试过编辑/etc/hosts,但所做的更改在重启后无法保留。

有什么建议么?

答案1

这取决于你的发行版:你可以分 3 步完成

  1. 编辑主机名文件您的分发(见下文)

    sudo nano /etc/hostname
    
  2. 给出命令:

    sudo hostname YOUR_NEW_HOSTNAME  # to change it for this session  
    hostname                         # just to check it  
    
  3. 编辑文件后/etc/hosts

    sudo nano /etc/hosts
    

Debian/Ubuntu
您需要编辑该文件/etc/hostname
用新名称替换实际名称。

Slackware Suse 和 Opensuse
要编辑的文件是/etc/HOSTNAME
用新名称替换实际名称。

Redhat、CentOS、Fedora
要编辑的文件是/etc/sysconfig/network
您必须在找到的行中替换名称HOSTNAME=OldName.OldDomain

注意:如果您不在sudoers您可以获得 root 权限,例如使用su -,然后在不输入任何命令的情况下给出相同的命令sudo


在一些(可能是旧的) Debian/etc/init.d/hostname.sh 基于发行版的启动时 会用到,并且会写入/etc/hostname oldname。要使它生效,您也必须在那里进行更改。


对于有效期到下次重启的解决方案,您可以使用hostname newname
它可能不会出现在您当前的 shell 中,因为变量是在打开时设置的(您可以手动修复它或在新的 shell 中工作)。

来自man hostname设置名称

当使用一个参数或 --file 选项调用时,命令会设置主机名或 NIS/YP 域名。hostname 使用 sethostname(2) 函数,而 domainname、ypdomainname 和 nisdomain‐name 三个都使用 setdomainname(2)。请注意,这仅在下次重新启动之前有效。 编辑 /etc/hostname 以进行永久更改。

相关内容