我想将终端标题设置为,user@host
以便我可以轻松地从窗口标题中得知我连接到哪台计算机。有没有办法从 SSH 或 GNOME 终端执行此操作?
答案1
是的。下面是一个使用 PS1 的 bash 示例,它应该与发行版无关:
具体来说,转义序列\[\e]0; __SOME_STUFF_HERE__ \a\]
是令人感兴趣的。为了更清楚起见,我已将其编辑为单独的变量。
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
TITLEBAR='\[\e]0;\u@\h\a\]'
# Same thing.. but with octal ASCII escape chars
#TITLEBAR='\[\033]2;\u@\h\007\]'
if [ "$color_prompt" = yes ]; then
PS1="${TITLEBAR}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ "
else
PS1="${TITLEBAR}\u@\h:\W\$ "
fi
unset color_prompt force_color_prompt
另请注意,设置 xterm 标题的方法有多种,具体取决于您使用的终端程序和 shell。例如,如果您使用 KDE 的 Konsole,则可以通过转至Settings
-> Configure Profiles
-> Edit Profile
->Tabs
并设置Tab title format
和Remote tab title format
设置来覆盖标题设置。
此外,您可能还想查看:
- 这“如何更改 xterm 的标题”常见问题解答对于其他外壳
- 这“即时魔法”提示有关在 bash 中工作的转义序列的良好参考。
- 这Bash 提示符 HOWTO有关 ANSI 颜色转义序列的参考。
答案2
这是我使用的 SSH bash 脚本的一个版本,它设置远程服务器的标题和命令提示符,而不对远程服务器进行任何更改。
my_ssh.sh:
#!/bin/bash
SETTP='MY_PROMPT="$HOSTNAME:$PWD\$ "'
SETTP="$SETTP;"'MY_TITLE="\[\e]0;$HOSTNAME:$PWD\a\]"'
SETTP="$SETTP;"'PS1="$MY_TITLE$MY_PROMPT"'
ssh -t $1@$2 "export PROMPT_COMMAND='eval '\\''$SETTP'\\'; bash --login"
您可以通过调用 ./my_ssh.sh username hostname 来调用它
答案3
以下对我有用(可能仅在 gnome 终端上):
comp@home$ cat /usr/bin/ssh
#!/bin/bash
echo -ne "\033]0;${1}\007"
ssh_bkup "$@"
其中 ssh_bkup 命令只是基本的“ssh”,但名称已更改,在 echo 命令更改当前终端的标题后立即调用该命令。
答案4
如果您使用的是zsh
,请将以下内容添加到.zshrc
文件中:
export DISABLE_AUTO_TITLE="true"
precmd() {
printf "\033];$(whoami)@$(hostname):${PWD/#$HOME/~}\007";
}