如何检测我是否处于“全屏”bash shell 或 GUI 终端窗口中?

Nic*_*k T 5 command-line bash

我有一些代码.bashrc使用当前运行的命令设置终端窗口标题,它在 Unity 中运行良好,终端位于窗口中。然而,当我与我登录Ctrl+ Alt+F1终端(无论它叫),我迅速被堆满了垃圾那就是设置(不存在)窗口的标题不同的转义序列。

如果我在一个或另一个中,如何从 bash 脚本中检测?

Rad*_*anu 5

如果您在 GUI 终端窗口中,则您不在登录 shell 中。如果你在 tty 中,你肯定在登录 shell 中。要测试这些,您可以使用:

shopt -q login_shell && echo 'Login shell' || echo 'Not login shell'
Run Code Online (Sandbox Code Playgroud)

或者,更简单:

shopt | grep login
Run Code Online (Sandbox Code Playgroud)

if语句中使用的示例:

login_shell=$(shopt | grep login | cut -f2)
if [ "$login_shell" = "on" ]; then 
    echo 'Login shell'
    # do stuff in login shell
else
    echo 'Not login shell'
    # do stuff in non login shell
fi
Run Code Online (Sandbox Code Playgroud)


tho*_*hom 5

没有比这更简单的了:

echo "$TERM"
Run Code Online (Sandbox Code Playgroud)

如果它返回“xterm”,则您在终端窗口中
如果它返回“linux”,则您在虚拟(Ctrl-Alt-F1)终端中