我有一些代码.bashrc使用当前运行的命令设置终端窗口标题,它在 Unity 中运行良好,终端位于窗口中。然而,当我与我登录Ctrl+ Alt+F1终端(无论它叫),我迅速被堆满了垃圾那就是设置(不存在)窗口的标题不同的转义序列。
如果我在一个或另一个中,如何从 bash 脚本中检测?
如果您在 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)
没有比这更简单的了:
echo "$TERM"
Run Code Online (Sandbox Code Playgroud)
如果它返回“xterm”,则您在终端窗口中
如果它返回“linux”,则您在虚拟(Ctrl-Alt-F1)终端中