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
単なる例です。実際にははるかに複雑で、ログインシェルで実行しているかどうかに応じて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
IMHO、とにかくこれが最善の選択です。なぜなら&より多くのシェルがありcsh
(例えばfish
)、そのうちのどれの動作も保証できないからです。