如何从终端启动 GUI 程序但在启动后关闭终端?

Jon*_*han 7 shell

我喜欢从终端启动 GUI 程序,例如emacs myfile.txt. 但是这样做会使该进程打开一个终端窗口,所以现在有两个窗口供我跟踪。如果我关闭终端窗口,GUI 程序也会关闭。

我知道我可以运行exec cmdcmd我试图运行的命令在哪里,并在程序完成关闭终端窗口。但是我想在命令启动后关闭终端窗口。有没有办法做到这一点?

Qua*_*odo 8

您可以将此功能附加到您的~/.bashrc

openclose() {
    "$@" &
    disown
    exit
}
Run Code Online (Sandbox Code Playgroud)

通过打开一个新终端(或source ~/.bashrc)并发出

openclose emacs myfile.txt
Run Code Online (Sandbox Code Playgroud)
  • "$@" & 在后台运行命令。
  • disown从外壳中删除后台进程(请参阅help disownman bash,信号部分),因此当外壳关闭时,该进程仍然存在。
  • exit 退出外壳。