通过终端启动程序并立即将其放入 bg / bashrc 中

通过终端启动程序并立即将其放入 bg / bashrc 中

因此,我尝试使用终端启动一个程序,但我也不想将其锁定在该终端上。

我在 bashrc 中添加了一个别名,以便于启动:

alias tksuite='sudo sh /usr/local/tksuite_client/run_client.sh && ^Z && bg && disown'

我也尝试过这个:

alias tksuite='sudo sh /usr/local/tksuite_client/run_client.sh  \& && disown'

不幸的是,它也没有起作用,或者更确切地说,它起作用了,但不像我喜欢的那样,因为程序没有显示,但正在运行。

有什么想法/指示我哪里做错了吗?

编辑:忘记提及:Ubuntu 14.04

答案1

将进程发送到后台的工作方式与您想象的不同,尤其是与 结合使用时sudo。出于这些原因,我建议采用一种完全不同的方法:

  1. tksuite在 中的某个目录中创建一个 shell 脚本$PATH,例如/usr/bin/tksuite

    #!/bin/sh
    exec /bin/sh /usr/local/tksuite_client/run_client.sh "$@"
    
  2. 使其可执行:

    sudo chmod +x /usr/bin/tksuite
    
  3. 现在,您可以在后台以超级用户权限启动脚本

    gksudo tksuite & disown
    

或者,这一切都可以在 shell 函数中完成

tksuite() {
    gksudo -- sh /usr/local/tksuite_client/run_client.sh "$@" &
    disown
}

可按tksuite预期调用。

相关内容