我目前通过在我的 .bashrc 中连接三个变量来设置我的 PS1 标题,方式如下:
export TERMSERVER=`who am i | awk '{print $NF}' | tr -d ')''('`
if [ -n "$TERMSERVER" ] ; then
PS1_TITLE='\h ($MACHTYPE) - $SHELL[$SHLVL] <-- $TERMSERVER'
else
PS1_TITLE='\h ($MACHTYPE) - $SHELL[$SHLVL]'
fi
export PS1="$PS1_TITLE\n$PS1_LINE\n$PS1_PROMPT"
我还打开了几个 PuTTY,并在每个 PuTTY 中启动不同的 GNU 屏幕,每个屏幕都有一个会话名称,例如:
screen -T screen -U -S session-1 (in PuTTY #1)
screen -T screen -U -S session-2 (in PuTTY #1)
我很想看看会议-1或者会议-2出现在我的PuTTY窗口标题中,但我找不到正确的.screenrc配置硬弦可以正常工作。我还找不到将“/var/run/screen/S-user”的内容正确映射到当前会话的方法。我尝试使用 ${PPID},但如果在子 shell 中,它会失败。
摘自我当前的.screenrc:
# Every x seconds, requery window title
backtick 1 600 600 id -un
# The window's title
hardstatus ignore
# *** this is the current window title I use since I can't get what I want.
hardstatus string "%1`@%H"
caption always
caption string "%{= KW}%-w%{= wk}%50>%n %t%{-}%+w%< %=%H %l"
有什么方法可以得到我想要的东西吗?
答案1
如果您希望screen
在 PuTTY 窗口标题上打印其会话名称,请将此功能添加到您的.bashrc
:
screen ()
{
sessionname=$(echo $@ | fgrep -- '-S ' | sed 's/.*-S \([^ ]\+\).*/\1/');
echo -ne "\033]0;${sessionname:-Putty}\007";
command screen $@;
echo -ne "\033]0;Putty\007"
}
照常运行屏幕。
该函数检查名为 -S 的选项,提取会话名称,使用终端转义序列设置它(如果会话名称为空,则设置 Putty)并运行screen
二进制文件。当screen
二进制文件退出时,PuTTY 窗口标题将重置为 Putty。
眼见为实 :-) :
这是准备执行屏幕的 Putty 会话。
在屏幕会话内。注意 PuTTY 窗口标题。
Screen 会话已结束。标题已重置。