我有以下 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-host
为VM-host
withhostname
命令,则此 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 行所示。但是一旦修改了主机名,如果您希望更新新的提示符,则需要使用上面的命令重新导出变量。