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
、それらの動作が保証されていないため、これが最善のオプションであると私は考えています...