bash - Bash 脚本 - 确定脚本是在终端控制台还是 gui 中启动
问题描述
如何确定脚本是否使用终端控制台启动,例如通过 .desktop 文件在 gui 中启动?
我查看了env
输出,一些变量看起来很有希望检查,比如 test $TERM var。但我想肯定知道并且有一种兼容/便携的方式来做到这一点。
这是脚本所需要的,它将有两种用户输入行为,回退到终端读取或 gui 输入。
解决方案
if [ -t 0 ]; then echo "in a terminal"; fi
测试文件描述符 0,即标准输入。如果您将脚本作为 GUI 启动,那么该测试应该是错误的。
作者:格伦杰克曼
如果脚本从终端运行,但输入重定向,这将不起作用。——戈登戴维森
因此,出于本次讨论的目的,终端仿真器正在与 linux 控制台混为一谈,并且两者都与我认为 xterm 的“gui 方法”区分开来,因为它在 gui 中打开...... - JosephHarriott
如果脚本由 .desktop 快捷方式或其他 gui 方法运行,则此问题的目的是编写可用于文本或 gui 的脚本界面。
推荐阅读
- c++ - 插入值时进程返回 -1073741819 (0xC0000005) 问题
- docker - Gitlab CI docker-in-docker部署未在容器内运行命令
- batch-file - 批处理文件将代码复制到具有动态名称的文件夹中的文件
- python - python中的离散响应变量
- netflix-ribbon - Spring Cloud Gateway Ribbon 负载均衡
- excel - 将从多个工作表中检索到的前两行数据格式化为组合视图工作表
- arrays - 基于多个属性在 Swift 中过滤数组
- django - Django,如何使用 nginx 服务媒体(用户)文件?
- c# - 如何在不使用 CustomRowCellEdit 的情况下更改 RepositoryItem?
- c# - 在 Visual Studio 2017 中调试 Web API 项目