如何判断当前终端会话是否在GNU屏幕中?

OTZ*_*OTZ 15 bash terminal gnu gnu-screen

.bashrc只有当当前终端窗口由GNU屏幕管理时,我才能执行命令.我该怎么做呢?它有环境变量吗?我曾经有过

if [ -n "$WINDOW" ]; then
    command
fi

但据我所知,$WINDOW可能会或可能不会在所有屏幕管理会话中定义.

sig*_*ine 18

检查环境变量$ STY(包含有关屏幕的信息)或$ TERM为'screen'(可能不太可靠).


rhl*_*lee 5

signine是正确的

见文档

http://www.gnu.org/software/screen/manual/html_node/Environment.html

STY

备用套接字名称.如果screen调用了if ,并且STY设置了环境变量,那么它只在正在运行的screen会话中创建一个窗口,而不是启动一个新会话.