在启动时根据提示运行 bash 脚本,然后启动浏览器

在启动时根据提示运行 bash 脚本,然后启动浏览器

我正在为我的客户创建一个标准的 Linux 映像,我想将其作为备份分发给他们。

我编写了一个 bash 脚本 -verifysetup.sh用于检查机器是否已设置。如果已设置,则默默成功,但如果未设置,则让他们输入其帐户详细信息,然后下载其配置文件和更新的可执行文件。

每次机器以默认用户帐户启动时,我都需要发生以下情况:

  1. 运行verifysetup.sh(在终端中,以便他们可以响应提示)
  2. 运行 chrome(指向 localhost 来显示其 UI)
  3. 关闭终端

为了实现这一目标,我:

  1. 创建如下.desktop文件:~/.config/autostart/
[Desktop Entry]
Type=Application
Exec=gnome-terminal -x bash -c "bash ~/bin/startui.sh"
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_GB]=Flow
Name=Flow
Comment[en_GB]=
Comment=
  1. 创建了一个脚本~/bin/startui.sh(见下文),运行该veryifysetup.sh脚本然后启动并放弃 Chrome
# Run the interactive setup script
bash ~/bin/verifysetup.sh

# "Start Chrome and disown"
(google-chrome --user-data-dir=r=~/chrome/chrome-1 --start-fullscreen --window-position=0,0 http://localhost </dev/null &>/dev/null &)

如果我打开一个终端并bash ~/bin/startui.sh直接运行,然后关闭终端,那么这就可以完美地工作了 - 即使我关闭终端窗口,Chrome 也会启动并继续运行。

但是,当脚本在启动时运行时,或者如果我通过gnome-terminal -x bash ~/bin/startui.sh从终端窗口调用来模拟此脚本,则 Chrome 窗口会在脚本退出时立即消失(如果我sleep 5在末尾放置一个语句,startui.sh我可以清楚地看到浏览器启动然后在终端窗口关闭时关闭。)

我也尝试过disown -a -h在启动 Chrome 后放弃使用,但结果相同。有趣的是,如果我jobs -l在此之前运行,则不会看到任何列出的作业。

那么,为什么通过新实例启动时 Chrome 会在脚本末尾关闭gnome-terminal,而直接运行时却不会关闭?有没有更好的方法来实现我想要做的事情?

相关内容