如何区分终端窗口 (GUI) 和控制台 (CTRL+ALT+F3)?

Per*_*uck 3 command-line gnome-terminal virtual-console

我使用彩色的 bash 提示,如下所示:

blue=$(tput setaf 4)
reset=$(tput sgr0)
bold=$(tput bold)
export PS1='($?) \[$bold$blue\]\u@\h:\w\[$reset\]$(__git_ps1)> '
Run Code Online (Sandbox Code Playgroud)

我通常在终端窗口(gnome-terminal)中工作,但有时在全屏控制台(CTRL+ ALT+ F3)中工作。

我的彩色提示在 GUI 终端中很好,但很难在全屏模式下阅读,因为颜色看起来不同。所以我想cyan=$(tput setaf 6)在控制台窗口中使用不同的颜色(例如)。为此,我需要弄清楚我当前处于哪种模式并相应地设置我的模式$PS1

我试过tty命令。它给

/dev/pts/0  # GUI terminal
/dev/tty3   # console 
Run Code Online (Sandbox Code Playgroud)

我还尝试检查$TERM. 它给

xterm-256color  # GUI terminal
linux           # console
Run Code Online (Sandbox Code Playgroud)

他们两个都适合我,但我的问题是:这是可靠区分控制台与终端的正确方法还是有更好的方法?如果那重要的话,我在 17.10.1。

des*_*ert 6

有多种方法可以确定,三个著名的方法是:

我怀疑TERM发行版甚至发行版之间的值不同,但这tty是一种稳定可靠的方法。我会像这样使用它:

if tty|grep -q tty; then
  echo "That's a TTY."
else
  echo "That's not a TTY."
fi
Run Code Online (Sandbox Code Playgroud)

至少who在 in 中似乎存在问题gnome-terminal,幸运的是有一个包装脚本可以解决这个问题。

有用的网址: