因此,我尝试使用终端启动一个程序,但我也不想将其锁定在该终端上。
我在 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
。出于这些原因,我建议采用一种完全不同的方法:
tksuite
在 中的某个目录中创建一个 shell 脚本$PATH
,例如/usr/bin/tksuite
:#!/bin/sh exec /bin/sh /usr/local/tksuite_client/run_client.sh "$@"
使其可执行:
sudo chmod +x /usr/bin/tksuite
现在,您可以在后台以超级用户权限启动脚本
gksudo tksuite & disown
或者,这一切都可以在 shell 函数中完成
tksuite() {
gksudo -- sh /usr/local/tksuite_client/run_client.sh "$@" &
disown
}
可按tksuite
预期调用。