С помощью 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
& csh
(например fish
, ), и у вас нет никаких гарантий, как поведет себя каждая из них...