Answers:
您可以通过将xterm窗口标题添加到您的.tcshrc
或中.cshrc
(替换当前precmd
别名)来设置xterm窗口标题:
alias precmd 'echo -n "\033]0;${PWD}\a"'
使用此功能时,请确保这是您.cshrc
和.tcshrc
文件中唯一的precmd别名。无论是否打开GNU屏幕会话,此方法都会在gnome-terminal和xterm中将当前目录显示为我的窗口标题。
我的答案是基于此。
我了解您使用的是tcsh,因此这可能行不通...以防万一有人在寻找bash方式来执行此操作。
如果您的系统(本地/远程)正在运行bash,则可以使用“ PROMPT_COMMAND”环境变量来设置窗口标题。在显示提示之前,将评估PROMPT_COMMAND。
(在您的.bashrc中):
export PROMPT_COMMAND='history -a && echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007'
说明:
'history -a'
这会将外壳程序设置为在每次命令完成时(而不是在整个外壳程序完成时)追加到历史文件。(这与本示例无关)。
'echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007"'
这回显转义代码“ \ 033] 0;”。它使用“用户” @“主机”变量(从右至第一个“。”删除最长匹配项)和工作目录(用“〜”代替“ $ HOME”)设置窗口标题。
上面的技巧将与支持动态更改窗口标题的任何终端应用程序一起使用(iTerm,Terminal.app,urxvt,aterm,eTerm。xterm等都可以)。您也可以在bash文档中查看shell变量“ TITLEBAR”,这很相似。
这应该在任何shell中都有效,但这是一个肮脏的.screenrc hack。它接管了您的hardstatus线路以工作,这对于某些用户而言可能是不可接受的。但是,即使没有下面的termcapinfo行,它也可以在最新的Ubuntu上的gnome-terminal中运行。在某些情况下,可能需要进行更深的调整(例如,我尚未在PuTTY上进行测试)。
# enable xterm title setting; may not be necessary on some platforms
termcapinfo xterm*|rxvt* 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
# dirty hack: put xterm title escapes in the hardstatus
# this example will yield "user@host || screen Win#:(windowtitle)
defhstatus "$USER@^EH || screen ^E:(^Et)"
# now turn it off so it doesn't print in the hardstatus line
hardstatus off
# and finally, use caption as a replacement hardstatus
caption always '%{= kG}[%{G}%H%{G}][%= %{= kw}%?%-Lw%?%{R}(%{W}%n*%f%t%?(%u)%?%{R})%{w}%?%+Lw%?%?%= %{G}][%{B}%C%a %M.%d%{G}]'
在此链接中找到。
该页面(已在上面链接)是解决方案,但是您需要确保该条目的终端字符串与终端的ID字符串(即,变量TERM设置为该字符串)对齐,否则不会起作用。
以下是我所做工作的摘要,在多年没有投入足够的时间来弄清楚这一点后,该方法对我有用:
通过运行以下命令找出终端的ID字符串是什么:
echo $TERM
它可能会说“ xterm”或“ linux”或“ rxvt”之类的内容。
现在,将以下行添加到位于homedir(〜/ .screenrc)中的.screenrc文件中(如果不存在,则添加一个):
termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
关键是要确保“ xterm”是您上面获得的TERM的ID字符串。您可以为使用的每种不同的术语类型做多行。
例如,我将其作为.screenrc文件,因为在将SShing放入框中时,我同时使用xterm和'linux'术语类型:
termcapinfo linux 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
希望这会有所帮助,并且完全与外壳无关。请记住,如果您以root身份运行screen,除了像这样自己的〜/ .screenrc文件之外,还需要修改〜root / .screenrc。