Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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)


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

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.


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

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!


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

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)


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

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 ?


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

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)

Hors 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