csh: Job+PID beim Forken loswerden

csh: Job+PID beim Forken loswerden

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] PIDund [1] Exit ...? Kann ich irgendwie cshden Ruhemodus aktivieren?

Die lsund echo foosind 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 -vAusgabe nicht funktioniert.

Antwort1

Sieht nicht so aus, als ob das ohne Zaubertricks geht (d. h. es gibt keine Option). Sie können sh -cjedoch verwenden:

$ ssh cshuser@localhost 'sh -c "( ls -d / nosuchfile ) & echo foo; wait"'   
foo
ls: nosuchfile: No such file or directory
/

bashMeiner 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 …

verwandte Informationen