当我连接到debian 8
服务器时,我无法更改gnome-terminal
选项卡的标题,请自行查看:
$ ssh deb6-server
$ echo -en '\e]0;test\a'
# title changes
$ echo $TERM
xterm-256color
$ cat /etc/issue
Debian GNU/Linux 6.0 \n \l
$ exit
$ ssh deb8-server
# here the title changes to USER@HOST: CWD
$ echo -en '\e]0;test\a'
# title doesn't change
$ echo $PROMPT_COMMAND
$ echo -en '\e[0;34mtest\e[0m\n'
test # written in blue
$ echo $TERM
xterm-256color
$ cat /etc/issue
Debian GNU/Linux jessie/sid \n \l
我真的不知道还能去哪里寻找。有任何想法吗?
答案1
如果ESC ] 0
在本地使用终端时转义序列可以更改终端的标题,那么它也可以通过 SSH 工作。 SSH 不会更改应用程序和终端之间的流量。
如果您在屏幕多路复用器(例如 screen 或 tmux)中运行应用程序,它们会自行解释转义序列并将其他序列发送到终端。这与 SSH 无关,但您可能更倾向于在远程计算机上使用 screen,而不是在本地计算机上。
远程计算机上的 shell 可以很好地配置为在开始执行命令或显示新提示时设置远程标题。这通常是通过将标题更改转义序列打印为提示的一部分来完成的,因此请检查变量的内容PS1
:
printf '%s\n' "$PS1" | cat -v
如果远程 shell 是 bash,还要检查PROMPT_COMMAND
和DEBUG
陷阱:
echo "$PROMPT_COMMAND"
trap -p DEBUG
如果远程 shell 是 zsh,请检查PS1
, RPS1
(罕见)以及precmd
和preexec
函数。
打印 -rl $PS1 $RPS1 $functions[precmd] $functions[preexec]