我想要一个脚本来检查它是否已从终端窗口中启动。如果它在没有窗口的情况下启动,它将在可见的终端窗口中重新运行。
如果找到此脚本行:
tty -s; if [ $? -ne 0 ]; then konsole -e "$0"; exit; fi
它工作正常。但是,由于它使用konsole
,它是特定于 KDE 的。有没有更便携的解决方案也可以在没有 KDE 的 Linux 系统上运行?
不存在适用于所有窗口系统的通用解决方案。但是,您可以查看实现常见终端程序的列表。好东西都带'-e'。
if [ ... ] ; then
for t in konsole gnome-terminal xterm ; do
if type "$t" >/dev/null 2>&1 ; then
$t -e "$@"
break
fi
done
另请注意,“tty -s”检查您当前的标准输入是否连接到终端。您可能想要为有效显示添加测试(“$DISPLAY”)。如果不在某些窗口管理器下运行,则启动终端窗口没有意义。
您可以通过检查让您知道是否在终端下运行的环境变量来进一步改进代码:“GNOME_TERMINAL_SCREEN”、“XTERM_SHELL”,或检查“$TERM”以获得“xterm*”。