我知道你可以做这样的事情:
export HOSTNAME=xyz
echo $HOSTNAME
您将看到所做的更改。但是,bash 在启动时从哪里读取以设置此环境变量?我知道您当然可以在 中编写导出语句.bashrc
,但这似乎更像是一种变通方法,而不是真正的解决方案。
我也尝试过编辑/etc/hosts
,但所做的更改在重启后无法保留。
有什么建议么?
答案1
这取决于你的发行版:你可以分 3 步完成
编辑主机名文件您的分发(见下文)
sudo nano /etc/hostname
给出命令:
sudo hostname YOUR_NEW_HOSTNAME # to change it for this session hostname # just to check it
编辑文件后
/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 以进行永久更改。