小编Jos*_*ver的帖子

Bash - 在脚本中更改主机名后,PS1 未使用正确的主机名进行更新

这是我在 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
Run Code Online (Sandbox Code Playgroud)

在这样的终端中得到这个

[user@host dir]# ./changehost newhostname
[user@host dir]# 
Run Code Online (Sandbox Code Playgroud)

但我想要的是这个

[user@host dir]# ./changehost newhostname
[user@newhostname dir]# 
Run Code Online (Sandbox Code Playgroud)

只有当我打开一个新的 shell 时,终端才会正确更新。

我也尝试过

export PS1='somestring'; export PS1='[\u@\h \W]\$' 
Run Code Online (Sandbox Code Playgroud)

在终端中的脚本之外,它确实切换到“somestring”并返回,但主机名未更改。:\

\h 是否有可能在进程开始时存储在内存中并且启动后无法更改?

shell bash

11
推荐指数
3
解决办法
2万
查看次数

标签 统计

bash ×1

shell ×1