我对不同的项目使用不同的屏幕会话。启动屏幕如下screen -S project1
。现在,我想在硬状态行中提及“project1”。
会话名称可以从环境变量 STY: 中获取STY=13539.project1
。
但如何将其放入屏幕?我在 hardstatus 中尝试了反引号命令和 %`,但似乎无法正确执行。
我做了什么:
.screenrc:
hardstatus string '%H:%`'
backtick 0 30 30 echo $STY
没有运气,空%`。
backtick 0 30 30 sessionname
仍然没有运气,会话名称:未找到
答案1
您可以将此字符串(如果需要,还可以包含其他信息)包含在您的$PS1
:
\[\e]0;$STY\007
将其放在单引号内,以延迟对变量的求值。然后将其添加到您的~/.screenrc
:
hardstatus string '%H:%h'
不幸的是,它screen
没有$STY
在为该功能生成的命令的环境中设置backtick
。
除了上面的选项之外,还有另一种选择:
hardstatus string '%H:%`'
backtick 0 30 30 sh -c 'screen -ls | grep --color=no -o "$PPID[^[:space:]]*"'
这个方法的优点是它会跟踪使用sessionname
命令所做的更改。第一个方法则不会。
编辑:
从这里:
由于屏幕源 .screenrc 时尚未设置 $STY,因此您可以在 .screenrc 中使用此技巧:
screen
screen $SHELL -c 'screen -X caption always "$STY"'
即向第一个窗口发送屏幕命令。