我有一个命令我想在.bashrc
只在当前终端时执行
窗口由GNU屏幕管理。我该怎么做呢?它有环境变量吗?我曾经有过
if [ -n "$WINDOW" ]; then command fi
但据我所知,$WINDOW
可能会或可能不会在所有屏幕上定义
管理会议。
答案 0 :(得分:18)
检查环境变量$ STY(包含有关屏幕的信息)或$ TERM为'screen'(可能不太可靠)。
答案 1 :(得分:5)
signine是正确的
参见文档
http://www.gnu.org/software/screen/manual/html_node/Environment.html
STY
备用套接字名称。如果调用了
screen
,并且设置了环境变量STY
,那么它只会在正在运行的screen
会话中创建一个窗口而不是启动新会话。
答案 2 :(得分:4)
勾选$TERM
,在屏幕会话中设置为“screen
”..(但不是100%保证)
<强>更新强>
或者,您可以利用屏幕中$TERMCAP
包含屏幕子字符串:
[[ $TERMCAP =~ screen ]] && echo "in screen"
也不是100%保证
<强> UPDATE2 强>
如果两种方法都不起作用,您可以在screen manual
中找到一些灵感答案 3 :(得分:2)
我想建议一个始终可见的替代解决方案,不需要检查是否知道您在screen
会话中。
只需在~/.screenrc
文件夹中添加/编辑文件$HOME
,然后添加caption
命令:
caption always "%{= kc}Screen session on %H (system load: %l)%-28=%{= .m} %Y-%m-%d %0c"
你会看到一条始终可见并着色的最底线。
Screen session on host (system load: 1.50 1.40 1.30) 2017-04-23 14:06
请注意:
当你在host1的屏幕内并打开另一个SSH会话到host2并打开那里也有
.screenrc
的屏幕时,你会得到两条从底部向上堆叠的线(就像一个包装器)。在这种情况下,这非常有用!
Screen session on host2 (system load: 0.01 0.03 0.05) 2017-04-23 14:14
Screen session on host1 (system load: 0.00 0.00 0.00) 2017-04-23 14:14
其他信息:
https://www.gnu.org/software/screen/manual/html_node/Caption.html
Command: caption always|splitonly [string]
https://www.gnu.org/software/screen/manual/html_node/String-Escapes.html#String-Escapes
我在SO上找到了这个here。
答案 4 :(得分:1)
检查变量$ TERM