bash:无需运行“exec bash”命令即可更改显示的主机名

bash:无需运行“exec bash”命令即可更改显示的主机名

我有:

lohacker@john:~$

我有一个功能:

test1 () {
    sudo hostname philip
    echo something
}

如果我尝试:

lohacker@john:~$ test1
something
lohacker@john:~$ hostname
philip
lohacker@john:~$ 

如您所见,显示的主机名没有改变(它始终保持为 john)。

我还有另一个功能:

test2 () {
    sudo hostname philip
    exec bash
    echo something
}

如果我尝试:

lohacker@john:~$ test2
lohacker@philip:~$ 

如您所见,主机名已改变但直到最后才继续执行该函数(它没有打印something在屏幕上)。

有没有办法不运行命令就可以更改显示的主机名exec bash

lohacker@john:~$ echo "$PS1"
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ 

该行末尾的美元符号后面有一个空格。

source ~/.bashrc或命令. ~/.bashrc不会刷新 shell 中显示的主机名。

答案1

好的,我已经解决了!

export PS1="${PS1//\\h/\$(hostname -s)}"

相关内容