从终端运行多个 GUI 程序而不放弃它们

从终端运行多个 GUI 程序而不放弃它们

我编写了一个非常简单(但对我很有用)的 bash 脚本。它所做的只是打开一些我手动打开的应用程序。以下是代码:

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

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

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

谢谢

答案1

您可以从文件中使用这两个函数.bashrc来启动和关闭它们,只需用lapp和调用它们即可kapp

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

答案2

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

. ./foo.sh

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

使用函数可能更简单。例如,在 bashrc 中添加:

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

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

相关内容