Auf der Manpage von Bash steht
In Ausgaben zu Jobs (z. B. der Ausgabe des Jobs-Kommandos) wird der aktuelle Job immer mit einem + und der vorherige Job mit einem - gekennzeichnet. Auch ein einzelnes % (ohne zugehörige Job-Angabe) bezieht sich auf den aktuellen Job.
In meiner folgenden Befehlsreihe, nachja 2 > /dev/null &, ich hatte erwartet, dass Job [2] der aktuelle Job ist und nicht Job [1].
Auch am Ende des Befehlsja 3 > /dev/null &Ich hatte erwartet, dass die Ausgabe des Jobs-Befehls wie folgt aussehen würde:
[1] Angehalten
[2]- Läuft
[3]+ Läuft
Was vermisse ich ?
$ yes 1 > /dev/null
^Z
[1]+ Stopped yes 1 > /dev/null
$ jobs
[1]+ Stopped yes 1 > /dev/null
$ yes 2 > /dev/null &
[2] 3082
$ jobs
[1]+ Stopped yes 1 > /dev/null
[2]- Running yes 2 > /dev/null &
$ yes 3 > /dev/null &
[3] 3116
$ jobs
[1]+ Stopped yes 1 > /dev/null
[2] Running yes 2 > /dev/null &
[3]- Running yes 3 > /dev/null &
Antwort1
Aus derselben Manpage:
[…] der aktuelle Job, also der letzte Job, der angehalten wurde, während er im Vordergrund war, oder der im Hintergrund gestartet wurde.
Es ist etwas mehrdeutig. Sie können es folgendermaßen verstehen:
- Nehmen Sie alle „Jobs, die angehalten wurden, während sie im Vordergrund waren, oder die im Hintergrund gestartet wurden“ …
- …dann wähle „das Letzte“.
Aber es isteher:
- Nehmen Sie „der letzte Job wurde gestoppt, während er im Vordergrund war“;
- aber falls es keinen solchen Job gibt, nehmen Sie „den letzten im Hintergrund gestarteten Job“.