在不同的 Linux 系统上获取终端二进制文件路径的通用方法?

在不同的 Linux 系统上获取终端二进制文件路径的通用方法?

我的应用程序中有以下硬编码的终端列表:

"/usr/bin/konsole", // KDE
"/usr/bin/gnome-terminal", // Gnome
"/usr/bin/pantheon-terminal" // Pantheon (Elementary OS)

然后,我只需从此列表中获取指向现有文件的第一个条目即可。显然,问题在于,只要程序在具有未知终端二进制文件的系统上运行,它就会停止工作。那么,我可以用某种通用方法确定它吗?也许通过一些标准环境变量?

答案1

首先,我只会将终端可执行文件名称保留在列表中,并根据PATH环境变量动态确定它们的实际路径 - 具体取决于发行版和/或安装选项,它们可能位于其他位置。或者使用which <terminal executable>which 为您完成此操作。

我会将其用作xterm最终的后备终端 - 它几乎是任何 X-Windows 安装的标准。

其他便利考虑:

  • 检查是否DISPLAY已设置 - 如果没有,则很可能终端不会运行
  • 尝试确定实际的图形环境,然后首先尝试更适合它的图形环境。WINDOWMANAGER可能会有所帮助。特定的窗口管理器通常会设置自己的环境变量,例如,在我的情况下,KDE设置:KDE_SESSION_UID,,,。KDE_FULL_SESSIONKDE_MULTIHEADKDE_SESSION_VERSION

相关内容