Con bash puedo ejecutar:
$ ssh bashuser@localhost '( ls -d / nosuchfile ) & echo foo; wait'
foo
ls: cannot access nosuchfile: No such file or directory
/
Si intento lo mismo con csh obtengo:
$ 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 )
Me gustaría obtener el mismo resultado que bash. ¿Cómo evito el [1] PID
y [1] Exit ...
? ¿Puedo ponerlo de alguna manera csh
en modo silencioso?
Los ls
y, echo foo
por supuesto, son sólo ejemplos. En realidad, serán mucho más complejos y dependerán de que se ejecuten bajo el shell de inicio de sesión y necesitaré stdout y stderr, por lo que una simple grep -v
salida no funcionará.
Respuesta1
No parece que puedas hacerlo sin algún truco de magia (es decir, no hay opción). Puedes usar sh -c
, sin embargo:
$ ssh cshuser@localhost 'sh -c "( ls -d / nosuchfile ) & echo foo; wait"'
foo
ls: nosuchfile: No such file or directory
/
En mi humilde opinión, esta es la mejor opción de todos modos, ya que hay más shells que bash
& csh
(como fish
), y no tienes garantía de cómo se comportan ninguno de ellos...