Bash

CentOS 中存在哪些配置,但 Ubuntu 中沒有,它顯示遠端終端會話的使用者@主機名?

  • March 29, 2016

我們的伺服器安裝了標準的“基本伺服器”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

即使我取消設置local PROMPT_COMMAND,然後 ssh 進入 CentOS,我user@hostname:path也會顯示在選項卡中,但在 ssh 進入 Ubuntu 時什麼也沒有。

所以我的結論是 CentOS 正在做一些事情來在我的選項卡中顯示 Ubuntu 沒有做的資訊。

問題:

CentOS 中存在哪些配置,但 Ubuntu 中沒有,顯示user@hostname:path遠端終端會話?

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 文件中進行任何此類配置更改,這就是終端標題欄沒有更改的原因。

引用自:https://unix.stackexchange.com/questions/272859