Com o bash eu posso executar:
$ ssh bashuser@localhost '( ls -d / nosuchfile ) & echo foo; wait'
foo
ls: cannot access nosuchfile: No such file or directory
/
Se eu tentar o mesmo com csh, recebo:
$ 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 )
Eu gostaria de obter a mesma saída do bash. Como evito o [1] PID
e [1] Exit ...
? Posso de alguma forma colocar csh
no modo silencioso?
Os ls
e echo foo
são, obviamente, apenas exemplos. Na realidade, eles serão muito mais complexos e dependerão de serem executados no shell de login e precisarei de stdout e stderr, portanto, uma grep -v
saída simples não funcionará.
Responder1
Não parece que você pode fazer isso sem alguns truques de mágica (ou seja, não há opção). Você pode usar sh -c
, no entanto:
$ ssh cshuser@localhost 'sh -c "( ls -d / nosuchfile ) & echo foo; wait"'
foo
ls: nosuchfile: No such file or directory
/
IMHO, esta é a melhor opção de qualquer maneira, já que existem mais shells que bash
& csh
(como fish
), e você não tem garantia de como qualquer um deles se comportará ...