Linux如何编程,例如bash或python脚本,知道它是如何启动的:从命令行还是交互式GUI?

我想做以下事情:

如果从终端启动bash / python脚本,它将执行诸如打印错误消息文本之类的操作.如果从GUI会话启动脚本,例如双击文件浏览器,它将执行其他操作,例如显示GUI消息框.

最佳答案
您可以检查stdin和stdout是否连接到终端.从GUI运行时,通常stdin完全没有连接,stdout连接到日志文件.从终端运行时,stdin和stdout都将连接到终端.

Python中:

import os
import sys

if os.isatty(sys.stdout.fileno()):
    # print error message text
else:
    # display GUI message

但是,您应该检查这是否适合您,因为它不能完全满足您的要求.但这是我能想到的最好的东西,它不依赖于太多的魔法.

在使用GUI代码之前,您应该检查DISPLAY环境变量是否已设置,因为没有它,它将无法工作.

请注意,终端用户仍然可以将stdin或stdout重定向到/ dev / null(例如),这可能会导致程序使用GUI行为.所以它远非完美.

最后,即使我已经给你答案,请不要这样做!用户对程序的行为根据其调用方式进行更改会让人感到困惑.

转载注明原文:Linux如何编程,例如bash或python脚本,知道它是如何启动的:从命令行还是交互式GUI? - 代码日志