Oui, lol.
Je l’ai récupéré parce que, précisémment, j’ai tapé entrée. Et si je le redirige dans un /temp/fic, effectivement, je le récupère vraiment. Dans le cas d’une redirection vers un fichier, je récupère le prompt aussi sec.
Si je dirige le résultat - on va dire “par défaut”, sur la sortie standard, le processus est exécuté, mais je ne récupère pas le prompt tant que je n’ai pas tapé “entrée”.
A noter que vos explications m’ont donné la bonne idée d’utiliser “sleep” :
sh-3.2# nl toto2
1 #!/bin/bash
2 { cd /home ; ls ; cd /home/bash* ;ps ; } >/tmp/toto &
3 echo "toto tombe a l'eau - EOF"
4 sleep 1
5 cat /tmp/toto
sh-3.2#
Ainsi, de cette façon, je peux voir le résultat dans /tmp/toto. Sans le sleep, le shell père est trop rapide pour le shell enfant, et le cat est exécuté avant que la redirection soit effectuée
. Bon, c’est bateau comme pas possible, mais ça illustre très bien votre explication.
Et… ah!
J’ai ensuite modifié mon script comme suit :
sh-3.2# nl toto2
1 #!/bin/bash
2 { cd /home ; ls ; cd /home/bash* ;ps ; }&
3 echo "toto tombe a l'eau - EOF"
4 sleep 1
sh-3.2#
Et là, Ô suprise :
bash_scripts image lib64 lost+found opt scripts test.txt
christian lib logs.tar.gz Masteradm01 samba sysvarfx vsftpd
PID TTY TIME CMD
30779 pts/1 00:00:00 sh
30848 pts/1 00:00:00 bash
30849 pts/1 00:00:00 bash
30851 pts/1 00:00:00 sleep
30852 pts/1 00:00:00 ps
sh-3.2#
Cette fois je récupère directement le prompt. Ce n’est plus le cas si je commente le “sleep”.
Et notez au passage que si je fais un ls, dans ce cas précis, j’obtiens :
christian lib logs.tar.gz Masteradm01 samba sysvarfx vsftpd
PID TTY TIME CMD
30779 pts/1 00:00:00 sh
30865 pts/1 00:00:00 bash
30867 pts/1 00:00:00 ps
ls
char-gen ex2-1 ex5 ex7 maj_paquets sysvar toto2 webmitm.crt
echo ex3 ex6 ex7-1 nohup.out tes2 toto3
ex1 ex3-1 ex6-1 ex8 ntest test trace1
ex2 ex4 ex6-2 fic nvtest toto trace2
sh-3.2#
J’ai donc le prompt, dans ce cas, après avoir lancé le ls. So what? L’exécution de la commande ls se fait dans le sous-shell? Ou bien, au contraire, elle s’effectue dans le shell père et dans ce cas, il ne s’agit que d’une histoire de prompt non-apparent?
:s