我正在编写一个独立于平台的 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 发行版。