Mit Bash kann ich Folgendes ausführen:
$ ssh bashuser@localhost '( ls -d / nosuchfile ) & echo foo; wait'
foo
ls: cannot access nosuchfile: No such file or directory
/
Wenn ich dasselbe mit csh versuche, erhalte ich:
$ 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 )
Ich möchte dieselbe Ausgabe wie bei Bash erhalten. Wie vermeide ich das [1] PID
und [1] Exit ...
? Kann ich irgendwie csh
den Ruhemodus aktivieren?
Die ls
und echo foo
sind natürlich nur Beispiele. In Wirklichkeit werden sie viel komplexer sein und auf die Ausführung unter der Login-Shell angewiesen sein. Außerdem brauche ich stdout und stderr, sodass eine einfache grep -v
Ausgabe nicht funktioniert.
Antwort1
Sieht nicht so aus, als ob das ohne Zaubertricks geht (d. h. es gibt keine Option). Sie können sh -c
jedoch verwenden:
$ ssh cshuser@localhost 'sh -c "( ls -d / nosuchfile ) & echo foo; wait"'
foo
ls: nosuchfile: No such file or directory
/
bash
Meiner bescheidenen Meinung nach ist dies sowieso die beste Option, da es mehr Shells als & gibt csh
(wie z. B. fish
) und Sie keine Garantie dafür haben, wie sich eine davon verhält …