Je veux exécuter xterm -e file.sh sans terminer.
Dans le fichier, j'envoie des commandes en arrière-plan et lorsque le script est terminé, elles ne sont toujours pas terminées.
Ce que je fais actuellement, c'est:
(cd /myfolder; /xterm -ls -geometry 115x65 -sb -sl 1000)
puis après la fenêtre apparaît
sh file.sh
exit
Ce que je veux faire, c'est quelque chose comme:
(cd /myfolder; /xterm -ls -geometry 115x65 -sb -sl 1000 -e sh file.sh)
sans terminer et attendez la fin des commandes en arrière-plan.
Quelqu'un sait comment faire cela?
Utilisez le wait
intégré dans votre script Shell. Il attendra que tous les travaux en arrière-plan soient terminés.
Exemple de travail:
#!/bin/bash
# Script to show usage of wait
sleep 20 &
sleep 20 &
sleep 20 &
sleep 20 &
sleep 20 &
wait
Le résultat
sgulati@maverick:~$ bash test.sh
[1] Done sleep 20
[2] Done sleep 20
[3] Done sleep 20
[4]- Done sleep 20
[5]+ Done sleep 20
sgulati@maverick:~$
Utilisez l'option hold
:
xterm -hold -e file.sh
-hold Active la ressource hold, c'est-à-dire que xterm ne détruira pas immédiatement sa fenêtre une fois la commande Shell terminée. Il attendra jusqu'à ce que vous utilisiez le gestionnaire de fenêtres pour détruire/tuer la fenêtre, ou si vous utilisez les entrées de menu qui envoient un signal, par exemple, HUP ou KILL.
J'ai essayé -hold, et cela laisse xterm dans un état qui ne répond pas qui nécessite une fermeture par des moyens non standard (le gestionnaire de fenêtres, une commande kill). Si vous préférez avoir un shell ouvert à partir duquel vous pouvez quitter, essayez d'ajouter ce shell à la fin de votre commande:
xterm -e "cd /etc; bash"
Je suis tombé sur la réponse le Super User .
En s'appuyant sur une réponse précédente, si vous spécifiez $ Shell au lieu de bash, il utilisera le shell préféré des utilisateurs.
xterm -e "cd /etc; $Shell"