![](/img/trans.png)
[英]ZSH: Run shell script from nodejs w/child process exec > command not found (beginner)
[英]How to make exec command in shell script run in different process?
我正在使用这个GUI应用程序GTKWave,它具有一个启动脚本gtkwave
,我已将其添加到系统路径中。 在上述脚本的最后,有以下一行:
$EXEC "$bundle_contents/MacOS/$name-bin" $* $EXTRA_ARGS
其中$EXEC=exec
我的问题是,鉴于exec
工作方式,我的终端被GUI进程“劫持”,这意味着在关闭窗口之前,我无法再运行任何命令,这是不理想的。
我目前通过将此函数放在.bash_profile
解决此问题:
function run-gtkwave ( ) { nohup gtkwave $1 &>/dev/null & }
虽然这样做有效,但很难将参数传递给gtkwave
。 理想情况下,我可以在该exec命令之前执行一个表单,但是我不确定如何在bash中执行该操作。 我知道&
字符应该这样做,但是
$EXEC "$bundle_contents/MacOS/$name-bin" $* $EXTRA_ARGS &
不削减,也没有
"$bundle_contents/MacOS/$name-bin" $* $EXTRA_ARGS &
要么
("$bundle_contents/MacOS/$name-bin" $* $EXTRA_ARGS) &
如何修改此行以在其自己的进程中运行应用程序?
通过将定义更改为,可以使run-gtkwave
函数将参数传递给gtkwave
:
function run-gtkwave { nohup gtkwave "$@" &>/dev/null & }
由于使用nohup
和输出重定向可以防止终端被“劫持”,因此您可以通过执行nohup
重定向和在那里的输出重定向来解决gtkwave
的问题。 (如果标准输入是终端,则nohup
从/dev/null
重定向它。)一种可能是:
"$bundle_contents/MacOS/$name-bin" $* $EXTRA_ARGS </dev/null &>/dev/null &
(我省略了$EXEC
因为在同时使用exec
和&
时看不到任何意义。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.