这是我从stackoverflow获得的帖子的副本;我意识到我应该在这里问这个...
我想运行一个更改主机名的脚本,并使用正确的主机名立即更新我的bash提示符(PS1变量)。我如何做到这一点?
我跑这个
#!/bin/bash
# Usage: ./changehost <newhostname>
#Do two sed's to edit the files for persistent hostname change
sed -i s/$(hostname)/$1/g "/etc/hosts"
sed -i s/$(hostname)/$1/g "/etc/sysconfig/network"
#run the hostname command with new hostname to update it
hostname $1
在这样的终端中得到这个
[user@host dir]# ./changehost newhostname
[user@host dir]#
但是我想要的是
[user@host dir]# ./changehost newhostname
[user@newhostname dir]#
仅当我打开新外壳时,终端才能正确更新。
我也试过做
export PS1='somestring'; export PS1='[\u@\h \W]\$'
不在终端脚本中,并且确实切换为“ somestring”并返回,但主机名未更改。:\
进程开始时\ h是否可能存储在内存中,并且启动后无法更改?
$PS1与我们分享您的最新消息吗?
export PS1='somestring'; export PS1='[\u@\h \W]\$'在终端的脚本之外进行操作,并且确实切换为“ somestring”并返回,但主机名未更改。:\进程开始时\ h是否可能存储在内存中,并且启动后无法更改?