我的 bash 提示符显示了我的主机名。如果我使用和hostname
中的命令更改主机名/etc/hosts
,提示符仍会使用旧名称。是否可以在不注销的情况下更新它?/etc/hostname
$HOSTNAME
答案1
如果您的提示设置中有\h
或\H
,则其扩展会在 shell 启动时初始化,因此您必须重新启动 bash ( exec bash
)。如果这让您很烦恼,请将您的提示设置更改为 print $HOSTNAME
。
答案2
如果您希望您的 bash 提示符随着主机名(由命令报告/bin/hostname
)的更新而动态更新,您可以执行以下操作:
[root@foo ~]# PS1='[\u@`/bin/hostname` \W]\$ '
[root@foo ~]# hostname
foo
[root@foo ~]# hostname bar
[root@bar ~]# hostname baz
[root@baz ~]#
这很浪费(每次按回车键时都会运行一个子 shell——虽然不可怕,但不够优雅),所以我只在需要的情况下才会使用它。我在处理用于生成多个目标 VM 实例的基本 VM 模板时使用它,其中实例的元数据在主机名中指示。即使这样,自定义也PS1
只是临时设置的,作为部署角色 VM 实例时的初始登录会话的一部分。