在没有终端的情况下启动时在终端中重新 运行 bash 脚本
Re-run bash script in terminal when started without terminal
我想要一个脚本来检查它是否已从终端内启动 window。如果它是在没有 window 的情况下启动的,它将在可见终端 window.
中重新 运行 自身
如果找到此脚本行:
tty -s; if [ $? -ne 0 ]; then konsole -e "[=12=]"; exit; fi
它工作正常。然而,由于它使用 konsole
,它是特定于 KDE 的。在没有 KDE 的 Linux 系统上是否也有 运行 更便携的解决方案?
不存在适用于所有 window 系统的通用解决方案。但是,您可以考虑实施常见终端程序列表。好东西都带'-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”)。如果不是 运行 在某个 window 经理的领导下,启动终端 window 毫无意义。
您可以通过检查环境变量来进一步改进代码,这些环境变量让您知道您是否在终端下 运行:'GNOME_TERMINAL_SCREEN'、'XTERM_SHELL',或检查“$TERM” 'xterm*'。
我想要一个脚本来检查它是否已从终端内启动 window。如果它是在没有 window 的情况下启动的,它将在可见终端 window.
中重新 运行 自身如果找到此脚本行:
tty -s; if [ $? -ne 0 ]; then konsole -e "[=12=]"; exit; fi
它工作正常。然而,由于它使用 konsole
,它是特定于 KDE 的。在没有 KDE 的 Linux 系统上是否也有 运行 更便携的解决方案?
不存在适用于所有 window 系统的通用解决方案。但是,您可以考虑实施常见终端程序列表。好东西都带'-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”)。如果不是 运行 在某个 window 经理的领导下,启动终端 window 毫无意义。
您可以通过检查环境变量来进一步改进代码,这些环境变量让您知道您是否在终端下 运行:'GNOME_TERMINAL_SCREEN'、'XTERM_SHELL',或检查“$TERM” 'xterm*'。