Answers:
我不知道窗口标题,但是我一直试图让我的系统在终止ssh会话时做一些事情-实际上是在终止ssh会话之后。简而言之:它不是那样工作的。基本上,您有三个选择:
在ssh周围编写一个包装器,即一个名为$ 可执行文件,该脚本ssh
优先/usr/bin/ssh
于$ PATH,exec /usr/bin/ssh $@
该文件的中间部分包含该行。这使您可以在有效ssh二进制文件运行之前和之后让shell做一些事情,同时将开销降到最低。
针对您选择的SSH源编写补丁程序,以提供清理钩子,该钩子执行通过命令行或某些配置设置传递的shell命令。那就是我们想要的。
已PROMPT_COMMAND
评估的输出history
。基本上是一种更通用,更丑陋的方法。
解决方案:在 ssh和su命令之后添加一些功能〜/ .bashrc以执行某些操作
function title()
{
# change the title of the current window or tab
echo -ne "\033]0;$*\007"
}
function ssh()
{
/usr/bin/ssh "$@"
# revert the window title after the ssh command
title $USER@$HOST
}
function su()
{
/bin/su "$@"
# revert the window title after the su command
title $USER@$HOST
}
注意:编辑〜/ .bashrc后重新启动bash
例:
# title is "user1@boxA"
ssh boxB # auto changes title while on boxB to "user1@boxB"
exit
# title returns back to "user1@boxA" because of our title call in ssh()
su - user2 # auto changes title while switched user to user2: "user2@boxA"
exit
# title returns back to "user1@boxA" because of our title call in su()
希望能有所帮助。
revert
因为您不检查之前的内容即可...如果您查询并保存了先前的值tho ;-)
使用相同的机制,配置本地外壳点文件(例如$PROMPT_COMMAND
中的~/.bashrc
)以适当地设置终端标题。
例如:
export PROMPT_COMMAND="printf '\e]0;bash\7\n'"
export PROMPT_COMMAND="printf '\e]0;\7\n'"
),则终端仿真器可以根据需要设置窗口标题。ssh到设置终端标题的远程主机时,终端仿真器将显示该标题,而注销时,它将恢复为使用自己的标题。至少,这就是macOS Terminal应用程序的工作方式。
将这些行添加到〜/ .bashrc
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
与基于debian的linux一起很好地工作
PROMPT_COMMAND
而不是使用会更好PS1
,因为您不必包括方\[ \]
括号,并且可以消除一些引号。
一种解决方案是在ssh'ing之前将终端变量更改为vt100,例如运行
export TERM=vt100
之所以有效,是因为通常初始化脚本会查看终端变量,并且仅将其标题更改为xterm。您将失去备用的屏幕,颜色以及可能无法欣赏的其他精美功能。
如果要将本地终端保留为xterm,请使用别名ssh即时更改终端变量,例如
alias ssh='TERM=vt100 /usr/bin/ssh'
我通过将其添加到.bashrc文件中的PS1中来解决此问题。
\[\e]2;\u@\H:\w\a\]
因此,整个行看起来像这样(我已经自定义了我的PS !:
export PS1='\[\e]2;\u@\H:\w\a\]\n($LOGNAME@$HOSTNAME) \t\n[$PWD]: '
希望对别人有帮助。
export PS1='\[\033]0;\007\]\h:\W \u\$ '
),则终端仿真器可以根据需要设置窗口标题。ssh到设置终端标题的远程主机时,终端仿真器将显示该信息,而注销时,它将恢复为使用自己的标题。至少,这就是macOS Terminal应用程序的工作方式。