Comment exécuter un script sans fermer le terminal?

56

J'ai un script dans le fichier bla.sh et il est exécutable. Lorsque je clique sur , le script est exécuté et la fenêtre est fermée. Je voudrais que la fenêtre reste ouverte .

Quelque chose comme la commande cmd /k** command dans Windows.

P.S. Je ne veux pas utiliser pause , mais je veux pouvoir écrire plus de commandes après l'exécution du script.

    
posée UAdapter 06.01.2011 - 18:49
la source

7 réponses

67

Mettez $SHELL à la fin de votre script:

Un petit défaut: puisque gnome-terminal n'exécute pas le shell bash , il le considérera comme une application et affichera un avertissement à son sujet lorsque vous essayez de fermer le terminal :

There is still a process running in this terminal
Closing the terminal will kill it.

Je n'ai trouvé aucun moyen de cacher cet avertissement. Si vous le souhaitez, vous pouvez le désactiver entièrement en exécutant:

gconftool --set /apps/gnome-terminal/global/confirm_window_close --type boolean false

Cela ne se produit pas si vous utilisez xterm au lieu de gnome-terminal; devrait-il vous déranger?

    
réponse donnée Stefano Palazzo 06.01.2011 - 19:51
la source
10

Utilisation du terminal Gnome

Utiliser gnome-terminal ajouter, bash à la fin de la chaîne de commande et appeler le script avec l'option -c fonctionne. Par exemple:

gnome-terminal -e "bash -c ~/script.sh;bash"

Cela fait ce qui suit:

  1. ouvre gnome-terminal
  2. exécute le script script.sh
  3. affiche l'invite bash une fois le script terminé.

Vous pouvez quitter la fenêtre gnome-terminal en fermant la fenêtre ou en tapant exit à l'invite bash. Ou vous pouvez taper plus de commandes comme demandé.

    
réponse donnée Karsvo 15.08.2012 - 21:06
la source
7

Si vous avez accès au script, vous pouvez également ajouter le code suivant à la fin:

read

Ce code attend une entrée avant la fermeture, le terminal reste ouvert jusqu'à ce que vous appuyiez sur Entrée.

    
réponse donnée jaycode 30.03.2017 - 08:35
la source
6

Si vous utilisez xterm , utilisez -hold .

    
réponse donnée Ramy 29.01.2013 - 09:54
la source
4

Utilisez l’option bash de --init-file avec un tube temporaire:

bash --init-file <(echo './<script_name>')

Ex:

bash --init-file <(echo './bla.sh')
    
réponse donnée Prem Anand 20.03.2015 - 10:58
la source
2

Utiliser xterm et ajouter ;bash à la fin de la chaîne de commande fonctionne. Par exemple:

xterm -e "bash ~/script.sh;bash"

Cela fait ce qui suit:

  1. ouvre xterm
  2. exécute le script script.sh
  3. affiche l'invite bash une fois le script terminé.

Vous pouvez quitter la fenêtre xterm en fermant la fenêtre ou en tapant exit à l’invite bash. Ou vous pouvez taper plus de commandes comme demandé.

    
réponse donnée Karsvo 15.08.2012 - 02:34
la source
1
xterm -e bash --rcfile bla.sh

Cela exécutera le script dans une nouvelle fenêtre et vous donnera même le contrôle de la fenêtre une fois celle-ci terminée.

Cependant, la nouvelle fenêtre ne charge pas ~/.bashrc normalement, car nous avons exécuté bla.sh à la place. On peut remédier à cela en mettant

. ~/.bashrc

en haut de bla.sh

    
réponse donnée Steven Penny 10.03.2014 - 05:28
la source

Lire d'autres questions sur les étiquettes