我喜欢从终端启动 GUI 程序,例如emacs myfile.txt
.但是这样做会使终端窗口与该进程一起打开,所以现在有两个窗口可供我跟踪。如果我关闭终端窗口,GUI 程序就会关闭。
我知道我可以运行exec cmd
,cmd
我尝试运行的命令在哪里,然后关闭终端窗口后程序完成。但我想在命令执行后关闭终端窗口推出。有没有办法做到这一点?
答案1
您可以将此函数附加到您的~/.bashrc
:
openclose() {
"$@" &
disown
exit
}
通过打开新终端(或source ~/.bashrc
)并发出测试它
openclose emacs myfile.txt
"$@" &
在后台运行该命令。disown
从 shell 中删除后台进程(参见help disown
和man bash
,信号部分),因此当 shell 关闭时,进程仍然存在。exit
退出外壳程序。