以下Z shell代码有效:
emacs &
disown emacs
但以下情况并非如此:
a="emacs"
"$a" &
disown "$a"
后者给出了一个错误,表示无法找到名为emacs的作业。我该如何解决这个问题?
答案 0 :(得分:2)
如果您总是希望立即取消该流程,则可以使用&|
或&!
而不是普通&
来在后台运行该流程,并在一步中将其取消。< / p>
如果您真的想将此作为单独步骤执行,则可以在disown
的参数周围放置单引号:
disown '"$a"'
在命令启动后调用jobs
将显示在命名作业之前不会发生删除引号和替换变量,因此在命名要删除的作业时需要包括这些引号