对于已执行过程的wait
是否有通用的方法,即鱼类背景(如open "foo"
)?据我所知,$!
(bash中最后执行的子进程的PID)不存在于fish中,所以你不能wait $!
。
答案 0 :(得分:3)
1)鱼的成语是cmd1; and cmd2
或if cmd1; cmd2; end
。
2)如果你执行open ARG
,你会发现bash和zsh也没有阻止。这是因为open
通常会影响正在运行的程序,然后open
退出。 shell不知道open
已将"真实"程序在后台。该行为的另一个例子是通过vim -g
在GUI模式下启动vim。将macOS上的-W
标志或Linux上的-w
添加到open命令,将-f
添加到vim命令。
这里的关键是open
,即使它是背景,也不会返回一个信号,用于评估and
运算符,直到打开的进程发生某些事情。所以你得到了你正在寻找的行为。