如何让 bash 更新其主机名的概念

如何让 bash 更新其主机名的概念

我的 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 实例时的初始登录会话的一部分。

相关内容