Aujourd'hui, j'ai observé un comportement étrange sur lequel j'espère pouvoir obtenir des conseils.
Voilà ce que je fais...
Avec au moins un processus déjà en cours d'exécution en arrière-plan, j'interromps ( Ctrl + Z ) le processus de premier plan, puis le placer en arrière-plan avec bg
.
Voici les résultats en zsh
:
$ some-long-running-command
^Z
zsh: suspended some-long-running-command
$ bg
[2] - continued some-long-running-command
$ jobs
[1] + running other-command-previously-run
[2] - running some-long-running-command
$
Et voici à quoi cela ressemble en bash
:
$ other-command-previously-run &
[1] 12345
$ some-long-running-command
^Z
[2]+ Stopped some-long-running-command
$ bg
[2]+ some-long-running-command &
$ jobs
[1]- Running other-command-previously-run &
[2]+ Running some-long-running-command &
$
Alors pourquoi bash
garder le processus placé en arrière-plan avec bg
comme le processus "en cours" (indiqué par "+") qui sera repris en cas d'échec. fg
est exécuté), tandis que zsh
définit l'"autre" processus comme actuel ? Je ne trouve aucune documentation suggérant que le comportement serait différent... Il est intéressant de noter que si vous faites plusieurs fg
+ ^Z
+ bg
en zsh
le choix du processus "actuel" va "basculer".
Quelqu'un d'autre a vu ça ?