csh:分叉时摆脱作业+PID

csh:分叉时摆脱作业+PID

使用 bash 我可以运行:

$ ssh bashuser@localhost '( ls -d / nosuchfile ) & echo foo; wait'
foo
ls: cannot access nosuchfile: No such file or directory
/

如果我尝试使用 csh 进行同样的操作,我会得到:

$ ssh cshuser@localhost '( ls -d / nosuchfile ) & echo foo; wait'
[1] 187253
foo
ls: cannot access nosuchfile: No such file or directory
/
[1]    Exit 2                 ( ls -d / nosuchfile )

我想得到与 bash 相同的输出。如何避免[1] PID[1] Exit ...?我可以以某种方式进入csh安静模式吗?

ls当然echo foo只是示例。实际上,它们会复杂得多,并且取决于在登录 shell 下运行,我将需要 stdout 和 stderr,因此简单的grep -v输出将不起作用。

答案1

看起来如果没有一些魔术就无法做到(即没有选择)。不过,您可以使用sh -c

$ ssh cshuser@localhost 'sh -c "( ls -d / nosuchfile ) & echo foo; wait"'   
foo
ls: nosuchfile: No such file or directory
/

bash恕我直言,无论如何,这是最好的选择,因为 shell 比&更多csh(例如fish),并且您无法保证它们中的任何一个的行为......

相关内容