首页 > 解决方案 > Bash 脚本 - 确定脚本是在终端控制台还是 gui 中启动

问题描述

如何确定脚本是否使用终端控制台启动,例如通过 .desktop 文件在 gui 中启动?

我查看了env输出,一些变量看起来很有希望检查,比如 test $TERM var。但我想肯定知道并且有一种兼容/便携的方式来做到这一点。

这是脚本所需要的,它将有两种用户输入行为,回退到终端读取或 gui 输入。

标签: bashuser-interfaceenvironment-variables

解决方案


if [ -t 0 ]; then echo "in a terminal"; fi

测试文件描述符 0,即标准输入。如果您将脚本作为 GUI 启动,那么该测试应该是错误的。

作者:格伦杰克曼

如果脚本从终端运行,但输入重定向,这将不起作用。——戈登戴维森

因此,出于本次讨论的目的,终端仿真器正在与 linux 控制台混为一谈,并且两者都与我认为 xterm 的“gui 方法”区分开来,因为它在 gui 中打开...... - JosephHarriott

如果脚本由 .desktop 快捷方式或其他 gui 方法运行,则此问题的目的是编写可用于文本或 gui 的脚本界面。


推荐阅读