web-dev-qa-db-fra.com

exécuter xterm -e sans terminer

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?

16
jarhead

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:~$ 
6
Samveen

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.

26
imwilsonxu

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 .

12
Gid

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"
3
Dan