2017-08-24 163 views
2

我试图在Ubuntu上启动GUI应用程序(rhythmbox)。在下面我尝试解释执行文件的链。从Bash脚本启动Bash脚本以启动GUI应用程序

# Window manager executes first 
~/i3wm_cmd_wrapper.sh Window_Name ~/mount_enc.sh 

这个包装器使用gnome-terminal来执行东西。这使得在用户可以输入信息的启动时打开终端。

# mount_enc.sh launches the following command in the end 
bash ~/launch_in_bg.sh rhythmbox 

mount_enc.sh确实从普通终端启动时应该做什么。但是我想在启动时自动启动它,并且在脚本完成后应该保持打开rhythmbox。

# launch_in_bg.sh is just doing what it's supposed to 
($PRGRM > /dev/null 2>&1) & 

我无法让gnome终端为我打开rhythmbox。另外我认为我的方法是错误的,如果我想让rhythmbox在gnome终端完成执行mount_enc.sh脚本后继续运行。任何人都可以想出更好的解决方案吗?

回答

1

如果您从控制台(即使在后台)打开程序,程序的进程是控制台进程的子进程,并在控制台进程终止时终止。 为了使程序的进程保持运行,它必须从控制台进程中分离出来。分离可以通过多种方式完成。一些例子:

nohup rhythmbox & 

rhythmbox & disown 

为了抑制输出,使用重定向在你的脚本。