从 Java 选择终端模拟器

从 Java 选择终端模拟器

我正在编写一个独立于平台的 Java 控制台工具,其中必须在运行时在单独的独立终端中执行一些命令。

但是,我需要知道应该使用 gnome-terminal 还是 xterm 哪个终端。即该特定系统上可用的那个。由于有许多不同的 Linux 变体可用。我想至少支持最明显的那些。

通常在 Java 中System.getProperty("os.name")会返回,Linux但它不会告诉您它是 Ubuntu 还是任何其他 Linux 变体。因此很难知道运行时启动哪个终端。无论是 gnome-terminal 还是 xterm 或者是否还有其他我不知道的东西。

工作组:

在 Windows 中:

cmd /c start java -jar jarTool arguments

在Ubuntu中:

gnome-terminal --execute java -jar jarTool arguments

或者

xterm -e java -jar jarTool arguments

另外,为了提供更多信息,我正在使用Runtime.getRuntime().exec(args or commands)在运行时从 Java 程序启动终端。

答案1

没有简单的方法可以确定在 Linux 上使用哪个终端程序。即使可以获取分发信息,也可能会也可能不会删除默认的 GUI 终端程序并安装其他程序。一般来说,方法是获取常用终端程序的列表并找到第一个可用的。作为示例,以下是 virtualbox linux guest 如何搜索可用终端:

GUESS_XTERMS="xterm rxvt dtterm eterm Eterm kvt konsole aterm"
for a in $GUESS_XTERMS; do
  if type $a >/dev/null 2>&1; then
    XTERM=$a
    break
  fi
done

答案2

最好使用以下命令执行命令。 /Bin/Bash <terminal command> 这适用于每个 Linux 发行版。

相关内容