Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#1 Le 16/08/2009, à 10:03

Christophe C

[résolu] Peut-on exécuter un script dans un terminal ?

Bonjour,

L'avantage...et l'inconvénient du script, c'est qu'on ne sait pas quand il a finis de s'éxécuter. On peut certe utiliser zenity pour afficher une barre, mais peut on tout simplement faire exécuter un script dans un terminal, sans que celui se ferme à la fin ? Pour voir ce qui se passe, les messages affichés, etc... ?

Cordialement.

Dernière modification par Christophe C (Le 16/08/2009, à 21:48)


XL-WALLPAPER - changeur de fonds d'écran libre et très léger pour Xfce et LXDE.
AIDEZ LE LIBRE - Faites un don à : Wikipedia - Fondation Gnome - Projet GNU.

Hors ligne

#2 Le 16/08/2009, à 11:12

chaoswizard

Re : [résolu] Peut-on exécuter un script dans un terminal ?

./nom_du_script

ou

bash nom_du_script

Ubuntu ==> Debian ==> Archlinux

Hors ligne

#3 Le 16/08/2009, à 11:19

®om

Re : [résolu] Peut-on exécuter un script dans un terminal ?

Christophe C a écrit :

Peut-on exécuter un script dans un terminal ?

Le contraire serait embêtant.

C'est un peu le même genre de question que "peut-on écrire du texte dans un traitement de texte?" lol

Hors ligne

#4 Le 16/08/2009, à 12:23

Christophe C

Re : [résolu] Peut-on exécuter un script dans un terminal ?

C'est un peu le même genre de question que "peut-on écrire du texte dans un traitement de texte?" lol

Sans doute. Donc tu m'explique comment ont fait ?

Je ne parle évidement pas de lancer le script depuis un terminal par un bash script. Ca je sais faire. Je n'essaie pas de lancer un script DEPUIS un terminal, mais DANS un terminal.

Je souhaite :
- créer un lanceur
- cliquer sur le lanceur
- il ouvre le terminal et éxécute dedans le script. Je peut alors voir tous les messages relatif à l'éxecution du script.

Cordialement.


XL-WALLPAPER - changeur de fonds d'écran libre et très léger pour Xfce et LXDE.
AIDEZ LE LIBRE - Faites un don à : Wikipedia - Fondation Gnome - Projet GNU.

Hors ligne

#5 Le 16/08/2009, à 12:30

®om

Re : [résolu] Peut-on exécuter un script dans un terminal ?

Ah d'accord, je comprends mieux smile

Avec gnome-terminal c'est un peu buggé à ce niveau-là, mais avec xterm c'est mieux :

xterm -e 'echo salut;read'

Hors ligne

#6 Le 16/08/2009, à 12:36

Christophe C

Re : [résolu] Peut-on exécuter un script dans un terminal ?

Ah, cool.

Chez  moi, ça donne xterm -e  'bash /home/chris/Documents/test.sh;read', ou
* xterme -e ouvre le terminal
* bash lance le script,
* read empèche la fermeture du terminal à la fin, ce qui me permet de voir ce qui s'est passé.

Excellent ! Et merci beaucoup big_smile!


XL-WALLPAPER - changeur de fonds d'écran libre et très léger pour Xfce et LXDE.
AIDEZ LE LIBRE - Faites un don à : Wikipedia - Fondation Gnome - Projet GNU.

Hors ligne

#7 Le 16/08/2009, à 12:38

®om

Re : [résolu] Peut-on exécuter un script dans un terminal ?

xterm -e  '. /home/chris/Documents/test.sh;read

(comme ça ça choisit le bon shell que tu as indiqué au début)

Hors ligne

#8 Le 16/08/2009, à 13:28

Christophe C

Re : [résolu] Peut-on exécuter un script dans un terminal ?

Quelle différence entre xterm -e  '. /home/chris/Documents/test.sh;read'
et xterm -e  'bash /home/chris/Documents/test.sh;read' ?

Je précise que j'ai testé xterm -e  'bash /home/chris/Documents/test.sh;read', ave un en-tête #!/bin/bash, et ça marche très bien.

Cordialement.

Dernière modification par Christophe C (Le 16/08/2009, à 13:29)


XL-WALLPAPER - changeur de fonds d'écran libre et très léger pour Xfce et LXDE.
AIDEZ LE LIBRE - Faites un don à : Wikipedia - Fondation Gnome - Projet GNU.

Hors ligne

#9 Le 16/08/2009, à 13:32

®om

Re : [résolu] Peut-on exécuter un script dans un terminal ?

Christophe C a écrit :

Quelle différence entre xterm -e  '. /home/chris/Documents/test.sh;read'
et xterm -e  'bash /home/chris/Documents/test.sh;read' ?

Si un jour tu changes ton script en #!/bin/autre_shell_non_compatible_bash, tu n'auras pas besoin de mettre à jour ton lanceur.

Mais bon peu importe smile

Hors ligne

#10 Le 16/08/2009, à 20:44

Christophe C

Re : [résolu] Peut-on exécuter un script dans un terminal ?

Ah bon ? Le point permet de lancer ts les scripts ?


XL-WALLPAPER - changeur de fonds d'écran libre et très léger pour Xfce et LXDE.
AIDEZ LE LIBRE - Faites un don à : Wikipedia - Fondation Gnome - Projet GNU.

Hors ligne

#11 Le 16/08/2009, à 20:47

chaoswizard

Re : [résolu] Peut-on exécuter un script dans un terminal ?

Christophe C a écrit :

Ah bon ? Le point permet de lancer ts les scripts ?

Oui, ça permet même de lancer les programme (genre code C compilé) : ./programme.
Dans tous les cas, il regarde le debut du fichier pour voir ce que c'est ; si c'est un script, il regarde avec quel shell on lui a demandé de le lancé et il le lance.

Dernière modification par chaoswizard (Le 16/08/2009, à 21:33)


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#12 Le 16/08/2009, à 21:22

Link31

Re : [résolu] Peut-on exécuter un script dans un terminal ?

®om a écrit :
Christophe C a écrit :

Quelle différence entre xterm -e  '. /home/chris/Documents/test.sh;read'
et xterm -e  'bash /home/chris/Documents/test.sh;read' ?

Si un jour tu changes ton script en #!/bin/autre_shell_non_compatible_bash, tu n'auras pas besoin de mettre à jour ton lanceur.

Mais bon peu importe smile

Non, dans les deux cas il faudrait changer le lanceur. La différence, c'est que la syntaxe '. /home/chris/Documents/test.sh', aussi appelé "source", lance le script directement dans le shell courant, alors que 'bash /home/chris/Documents/test.sh' lance le shell dans un sous-shell (qui sera forcément un shell bash).

Et "source" est incapable de lancer un binaire.

Pour lancer n'importe quel exécutable, script ou binaire, en se basant sur son shabang, il faut utiliser la syntaxe : '/home/chris/Documents/test.sh' ou 'cd /home/chris/Documents; ./test.sh'.

Dernière modification par Link31 (Le 16/08/2009, à 21:23)

Hors ligne

#13 Le 16/08/2009, à 21:29

®om

Re : [résolu] Peut-on exécuter un script dans un terminal ?

Ah ouais. Tiens bizarrement le source il plante même sur le #!/bin/sh :

rom@rom-laptop:/tmp/test$ cat script
#!/bin/sh
echo $'\n'
rom@rom-laptop:/tmp/test$ sh script
$

rom@rom-laptop:/tmp/test$ bash script


rom@rom-laptop:/tmp/test$ . script
bash: ELF : commande introuvable

Dernière modification par ®om (Le 16/08/2009, à 21:30)

Hors ligne

#14 Le 17/08/2009, à 00:01

Link31

Re : [résolu] Peut-on exécuter un script dans un terminal ?

®om : "script" est un utilitaire système, donc un exécutable ELF... Essaie un autre nom pour ton script.

Hors ligne

#15 Le 17/08/2009, à 01:10

®om

Re : [résolu] Peut-on exécuter un script dans un terminal ?

Link31 a écrit :

®om : "script" est un utilitaire système, donc un exécutable ELF... Essaie un autre nom pour ton script.

Arf du coup il prend le dessus quand c'est '.', mais pas quand c'est bash… Il ne devrait jamais prendre le dessus…
Merci en tout cas.

Hors ligne

#16 Le 17/08/2009, à 11:07

Elzen

Re : [résolu] Peut-on exécuter un script dans un terminal ?

Pour lancer un script shell avec le shell courant, y a $0 ./script, aussi, non ? ($0 pointe sur le programme actuellement exécuté, donc quand vous tapez ça dans une console, ça vous donne l'exécutable du shell courant).

Pour un fichier local, toujours utiliser ./fichier wink J'ai eu le même problème en créant un fichier appelé "test" dans le répertoire courant, une fois, et en ayant mis '.' au début de mon PATH... les if test et while test dans les autres scripts marchaient moins bien roll

Dernière modification par ArkSeth (Le 17/08/2009, à 11:10)

En ligne

#17 Le 17/08/2009, à 13:56

Link31

Re : [résolu] Peut-on exécuter un script dans un terminal ?

ArkSeth a écrit :

Pour lancer un script shell avec le shell courant, y a $0 ./script, aussi, non ? ($0 pointe sur le programme actuellement exécuté, donc quand vous tapez ça dans une console, ça vous donne l'exécutable du shell courant).

Le script ne se lance pas dans le shell courant avec ta méthode, il se lance dans un sous-shell (même si le nom du shell utilisé est le même). De plus, ça ignore l'indication dans le shabang sans pour autant se comporter comme "source", ce qui explique pourquoi cette méthode n'est jamais utilisée... Essaie de lancer un script Perl ou Python avec wink

Hors ligne

Haut de page ↑