设备名称(pretty hostname)与主机名(static hostname)不同,仅改gui设备名称不影响终端显示和服务识别;必须用hostnamectl同时设置--static和--pretty,并同步更新/etc/hosts中127.0.1.1映射,三者一致才真正生效。

设备名称不是主机名,改错地方会导致终端显示不变、服务识别异常
设备名称(Pretty Hostname)和主机名(Static Hostname)是两回事
Ubuntu 16.04+ 使用 hostnamectl 管理三种主机名:static(用于网络通信)、transient(内核动态维护)、pretty(仅面向用户显示的“设备名称”)。你在设置 → 关于 → 设备名称里看到并修改的,只是 pretty 类型;它不影响 hostname 命令输出,也不参与 SSH、sudo 或服务启动逻辑。
- 终端提示符(
user@xxx)默认显示的是 static 主机名,不是 pretty 名称 - GUI 中“设备名称”修改后,
hostname和hostnamectl --static输出完全不会变 - 想让终端左上角、GNOME 活动概览、蓝牙共享等地方统一显示新名字,必须同时设好 pretty 和 static
用 hostnamectl 同时设置设备名称和静态主机名
只改 pretty 名称(比如通过 GUI)是半截子操作。真正要“改设备名称又让终端同步”,得用命令一次性对齐:
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
- 运行
sudo hostnamectl set-hostname "MyLaptop" --static(设 static,影响终端、网络、服务) - 再运行
sudo hostnamectl set-hostname "My Laptop" --pretty(设 pretty,影响设置界面、GNOME 显示) - 这两步缺一不可;顺序无所谓,但必须都执行
- 执行后立即生效,无需重启——但旧终端 shell 还缓存着老名字,新开一个终端才能看到
user@MyLaptop
/etc/hosts 文件必须同步更新
即使 hostnamectl 改好了,如果 /etc/hosts 里还映射着旧名,sudo 会报 unable to resolve host xxx,SSH 登录可能卡顿,某些 Python 脚本调用 socket.gethostname() 也会返回错误结果。
- 编辑
sudo nano /etc/hosts - 找到含
127.0.1.1的那行(不是127.0.0.1) - 把该行末尾的旧主机名替换成你刚设的 static 名,例如:
127.0.1.1 MyLaptop - 保存退出;这一步漏掉,后续很多看似无关的问题都会冒出来
验证是否真正改全了
别只信 GUI 或单个命令。用这三行一起看:
-
hostname→ 应输出你的 static 名(如MyLaptop) -
hostnamectl --pretty→ 应输出带空格/符号的设备名称(如My Laptop) -
grep "127\.0\.1\.1" /etc/hosts→ 应显示127.0.1.1 MyLaptop,且不能有重复或注释行干扰
只要其中任意一项不一致,就说明改得不干净——尤其是 /etc/hosts 里多了一行旧映射、或者 hostnamectl --static 和 hostname 输出不同,这类细节最容易被忽略,却最常引发后续故障。










