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およびを回避するにはどうすればよいでしょうか? 何らかの方法でquiet モードに[1] Exit ...することはできますか?csh

およびlsは、echo fooもちろん単なる例です。実際には、これらははるかに複雑で、ログイン シェルで実行される必要があり、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いずれにせよ、 &よりも多くのシェルcsh( など)がありfish、それらの動作が保証されていないため、これが最善のオプションであると私は考えています...

関連情報