Linux 如何检查脚本是在工作站上运行还是在服务器上运行

Linux 如何检查脚本是在工作站上运行还是在服务器上运行,linux,shell,Linux,Shell,有什么可靠的方法可以知道运行shell scipt的用户会话是否是图形会话? 脚本是否在带有图形的工作站计算机上启动 我可以想到一些选择,但它们都是特定于发行版的,我正在寻找尽可能不依赖发行版的解决方案 UPD: 对不起,我知道我的措辞不正确 我需要确定机器是否有图形并相应地执行操作,脚本可以从非图形会话(例如ssh)启动,但在工作站上,我需要将此情况作为工作站处理 UPD2: 我正在编写脚本来密封vm模板。我事先不知道它将运行在哪个发行版(主要是Ubuntu、Centos和Manjaro,但谁

有什么可靠的方法可以知道运行shell scipt的用户会话是否是图形会话? 脚本是否在带有图形的工作站计算机上启动

我可以想到一些选择,但它们都是特定于发行版的,我正在寻找尽可能不依赖发行版的解决方案

UPD: 对不起,我知道我的措辞不正确

我需要确定机器是否有图形并相应地执行操作,脚本可以从非图形会话(例如ssh)启动,但在工作站上,我需要将此情况作为工作站处理

UPD2:

我正在编写脚本来密封vm模板。我事先不知道它将运行在哪个发行版(主要是Ubuntu、Centos和Manjaro,但谁知道呢)或哪种类型的vm(工作站或服务器)上。 我有几个特定于发行版的步骤,我想将ws/server案例选择和处理与特定于发行版的处理分开,因为这很可能迟早会导致代码重复

例如


应在centos/fedora/rhel工作站上运行,而不是在服务器上运行。

检查是否设置了
DISPLAY
,并以
localhost
或冒号开头。这显然并没有揭示硬件的类型,但这种启发式方法应该满足您的实际要求

案例$DISPLAY in
localhost:*:*)xeyes;;#我们是图形化的
*)关机-现在为h;;
以撒

我把
*)
放在案例中,只是为了演示如何在非图形化的情况下运行某些东西;如果您不需要,可能会将其完全取出。

我曾经遇到过类似的问题,我想我最后看到的是
$DISPLAY
。我非常没有信心回答这个问题,但是…我对我的解决方案没有太多信心,以至于它甚至没有提出问题)为什么您认为GUI会话是机器类型的可靠指示器?很多服务器也运行X11。感谢您的回复,我需要实现一点不同的东西,我有一些令人困惑的问题细节(但标题是正确的)抱歉。现在更不清楚了。真的,你能解释一下你想完成什么吗?在问题本身。
systemctl enable initial-setup.service
touch /.unconfigured