我希望脚本检查是否已从终端窗口中启动。如果启动时没有窗口,它将在可见的终端窗口中重新运行。
如果找到此脚本行:
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'检查您当前的stdin是否已连接到终端。您可能要添加一个有效显示的测试(“ $ DISPLAY”)。如果没有在某些窗口管理器中运行,则启动终端窗口毫无意义。
您可以通过检查环境变量来进一步改善代码,这些变量可以让您知道您是否在以下终端上运行:'GNOME_TERMINAL_SCREEN','XTERM_SHELL',或检查'$ TERM'中的'xterm *'。