如何更改当前 bash 会话中的 bash 提示字符串?

如何更改当前 bash 会话中的 bash 提示字符串?

我有以下 bash 提示字符串:

root@LAB-VM-host:~# echo "$PS1"
${debian_chroot:+($debian_chroot)}\u@\h:\w\$ 
root@LAB-VM-host:~# hostname 
LAB-VM-host
root@LAB-VM-host:~# 

现在,如果我将主机名从 更改LAB-VM-hostVM-hostwithhostname命令,则此 bash 会话的提示字符串不会更改:

root@LAB-VM-host:~# hostname VM-host
root@LAB-VM-host:~# 

有没有办法更新当前 bash 会话的 bash 提示字符串的主机名部分,或者它仅适用于新的 bash 会话?

答案1

PS1如果重新导出,Debian 是否真的会像其他答案所建议的那样获取更改后的主机名?如果是这样,您可以像这样刷新它:

export PS1="$PS1"

不知道 debian,但在 OS X Mountain Lion 上这会不是有什么影响。其他答案中建议的明确版本也不会(与上面完全相同)。

即使这有效,也必须在每个正在运行的 shell 中单独重置提示符。在这种情况下,为什么不手动将其设置为新主机名呢?或者只是启动一个新的 shell(作为带有 的子 shell bash,或者用 替换正在运行的进程exec bash)——主机名将被更新。

自动跟踪所有正在运行的 shell 中的主机名更改,在您的 中设置您的提示.bashrc

export PS1='\u@$(hostname):\w\$ '

或者在你的情况下:

export PS1='${debian_chroot:+($debian_chroot)}\u@$(hostname):\w\$ '

即,将\h提示符替换为$(hostname),并确保将其括在单引号中。这将hostname在它打印的每个提示之前执行,但那又怎样。它不会让计算机屈服。

答案2

据 dr01 说,你需要使用:

export PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$' 

但上面的行是暂时的,如果你想永久使用,你必须在你的.bashrc.profile

答案3

主机名不会在提示中自动更新。您必须重新导出$PS1变量:

export PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$' 

该变量已在您的.bashrc或其他 BASH 配置文件中设置,如输出的第 #1 行和第 #2 行所示。但是一旦修改了主机名,如果您希望更新新的提示符,则需要使用上面的命令重新导出变量。

相关内容