从终端运行多个gui程序而不会丢失它们

我为bash脚本制作了一个非常简单(但对我有用)。 它只是打开我手动打开的一些应用程序。 这是代码:

#!/bin/bash netbeans & mysql-workbench & opera & chromium-browser & 

现在当我关闭终端时,脚本打开的应用程序继续运行。 这是正常的,这就是“&”的用途。

我的问题是:有没有办法自动运行这些应用程序,但也自动关闭它们? 如果他们仍然连接到终端,他们会关闭,但是当我删除&符号时它只运行第一个应用程序。

谢谢

您可以在.bashrc文件中使用这两个函数来启动和关闭它们,只需使用kappkapp调用它们:

 lapp(){ netbeans & mysql-workbench & opera & chromium-browser & } kapp() { pkill 'netbeans|mysql-workbench|opera|chromium-browser' } #Or kapp() { killall 'netbeans|mysql-workbench|opera|chromium-browser' } 

信息:

  • 记得在添加这些函数后运行source .bashrc

(来源: man pkill

您必须获取脚本以便在当前shell中执行这些命令,而不是在为脚本启动的forked-off shell中执行:

 . ./foo.sh 

然后,这些后台进程将成为shell的作业控制的一部分。

使用函数可能更容易。 例如,在你的bashrc中添加:

 foo () { netbeans & mysql-workbench & opera & chromium-browser & } 

然后,当你从bash运行foo时,它将运行当前shell中的命令。