我们的服务器安装了标准的“基本服务器”CentOS 6.7,桌面安装了 Ubuntu 14.04。
从我的 Ubuntu 桌面,当我 ssh 到远程服务器(即:ssh 到 CentOS 实例)时,我的终端选项卡显示user@hostname:path
但是,当我 ssh 进入远程桌面(即:ssh 进入另一个 Ubuntu 实例)时,我的终端选项卡显示my_user@my_host:path
.也就是说,它显示了我所在的本地用户和本地主机名以及本地路径事先的ssh 进入删除桌面。
我已经覆盖了PS1
Ubuntu 和 CentOS 主机
我有一个当地的设置PROMPT_COMMAND
,但在任何远程 CentOS 或 Ubuntu 主机上没有任何设置。
[local-ubuntu] $ echo $PROMPT_COMMAND
[local-ubuntu] PROMPT_COMMAND=echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"
[remote-ubuntu] $ echo $PROMPT_COMMAND
[remote-ubuntu]
[remote-centos] $ echo $PROMPT_COMMAND
[remote-centos]
我正在运行 GNOME 终端 3.6.2
[local-ubuntu] $ gnome-terminal --version
[local-ubuntu] GNOME Terminal 3.6.2
即使我未设置我的本地PROMPT_COMMAND
,然后 ssh 进入 CentOS,我user@hostname:path
在选项卡中显示,但当 ssh 进入 Ubuntu 时什么也没有显示。
所以我的结论是,CentOS 正在做一些事情来在我的选项卡中显示该信息,而 Ubuntu 没有这样做。
问题:
CentOS 中存在但 Ubuntu 中不存在的哪些配置显示user@hostname:path
远程终端会话?
答案1
Redhat(以及 Centos)PROMPT_COMMAND
设置标题栏调整控制序列默认情况下:
% bash -xic : 2>&1 | egrep 'PROMPT|PS'
++ PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
++ PS1='[\u@\h \W]\$ '
%
/etc/bashrc
这个设置可以在Redhat 上的文件中找到:
% grep 007 /etc/bashrc
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
% rpm -qf /etc/bashrc
setup-2.8.14-20.el6_4.1.noarch
%
Ubuntu 可能不会在全局 shell rc 文件中进行任何此类配置更改,这就是终端标题栏未更改的原因。