Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Q] Lancement d'un shell-script par double-clic avec Terminal ouvert

9 réponses
Avatar
blanc
Bonjour à tous,

On peut lancer l'exécution d'un shell-script en double-cliquant sur
l'icône du fichier (pourvu que, par exemple, le nom de ce fichier se
termine par .command ou .term).

J'ai cependant remarqué que dans certaines circonstances, si le Terminal
est déjà ouvert, le lancement par cette méthode ne fonctionne pas. On
est alors obligé de quitter le Terminal et de recommencer.

Quelqu'un sait-il pourquoi, et comment y remédier ?

Une autre question à ce sujet : existe-t-il un moyen de lancer un tel
script, toujours par double-clic, sans que la fenêtre du Terminal ne
soit visible ?

Merci d'avance pour vos réponses que j'attends avec intérêt.

JPaul.



--
/==/==\\-\ Jean-Paul BLANC
/ /--/--//\\ quelque-part (somewhere)
|/| L |\\\ en (in)
\/|| = |||\\\ FRANCE

9 réponses

Avatar
Patrick Stadelmann
In article <1hwvfco.1iewqji40f4vsN%,
(JPaul) wrote:

Une autre question à ce sujet : existe-t-il un moyen de lancer un tel
script, toujours par double-clic, sans que la fenêtre du Terminal ne
soit visible ?


Passer par AppleScript et "do shell script" :
http://developer.apple.com/technotes/tn2002/tn2065.html

Patrick
--
Patrick Stadelmann

Avatar
Anonyme
JPaul wrote:

J'ai cependant remarqué que dans certaines circonstances, si le Terminal
est déjà ouvert, le lancement par cette méthode ne fonctionne pas. On
est alors obligé de quitter le Terminal et de recommencer.

Quelqu'un sait-il pourquoi, et comment y remédier ?


Je n'ai jamais eu ça et je n'en ai entendu parlé que par toi... :-/

Une autre question à ce sujet : existe-t-il un moyen de lancer un tel
script, toujours par double-clic, sans que la fenêtre du Terminal ne
soit visible ?


Une solution parmis d'autres, le lancer depuis un AppleScript par un
do shell script "chemin/vers/le/script"

Si tu ne veux pas avoir plusieurs fichiers, tu peux alors faire un
applescript sous forme de paquet d'application et mettre ton script
dedans.

--
Anonyme ( jayce <@> mosx.net )
********* MosX.net <http://www.mosx.net/> *********
(avec un put§@#* de problème DNS sur le domaine mosx.net)

Avatar
blanc
Anonyme wrote:

JPaul wrote:

J'ai cependant remarqué que dans certaines circonstances, si le Terminal
est déjà ouvert, le lancement par cette méthode ne fonctionne pas. On
est alors obligé de quitter le Terminal et de recommencer.

Quelqu'un sait-il pourquoi, et comment y remédier ?


Je n'ai jamais eu ça et je n'en ai entendu parlé que par toi... :-/


Alors essaie ceci :
1) Lance un script quelconque (par double-clic) qui ouvre une fenêtre du
T mais ne la referme pas.
2) Ferme la fenêtre à la main
3) Lance un autre script (ou le même), toujours par double-clic

Chez moi aucune fenêtre ne s'ouvre pour exécuter le deuxième script.
Je ne sais si c'est ainsi uniquement chez moi, ou si c'est du
particulièrement aux scripts que j'écris. Si tu n'arrives pas à
reproduire le phénomène, je t'enverrai un script qui le fait chez moi.



Une autre question à ce sujet : existe-t-il un moyen de lancer un tel
script, toujours par double-clic, sans que la fenêtre du Terminal ne
soit visible ?


Une solution parmis d'autres, le lancer depuis un AppleScript par un
do shell script "chemin/vers/le/script"

Si tu ne veux pas avoir plusieurs fichiers, tu peux alors faire un
applescript sous forme de paquet d'application et mettre ton script
dedans.


Merci à toi et à Patrick pour vos réponses.

JPaul.
--
/==/==- Jean-Paul BLANC
/ /--/--// quelque-part (somewhere)
|/| L | en (in)
/|| = ||| FRANCE


Avatar
Anonyme
JPaul wrote:

Je n'ai jamais eu ça et je n'en ai entendu parlé que par toi... :-/


Alors essaie ceci :
1) Lance un script quelconque (par double-clic) qui ouvre une fenêtre du
T mais ne la referme pas.
2) Ferme la fenêtre à la main
3) Lance un autre script (ou le même), toujours par double-clic

Chez moi aucune fenêtre ne s'ouvre pour exécuter le deuxième script.
Je ne sais si c'est ainsi uniquement chez moi, ou si c'est du
particulièrement aux scripts que j'écris. Si tu n'arrives pas à
reproduire le phénomène, je t'enverrai un script qui le fait chez moi.


Aucun problème chez moi...

Envoie moi un de tes scripts mais pas sur mon adresse mosx, sur
jayce.piel chez gmail.com

Mais je pencherais plutôt pour une confg particulière du terminal...

--
Anonyme ( jayce <@> mosx.net )
********* MosX.net <http://www.mosx.net/> *********
(avec un put§@#* de problème DNS sur le domaine mosx.net)


Avatar
Nicolas.MICHEL
JPaul wrote:

Alors essaie ceci :
1) Lance un script quelconque (par double-clic) qui ouvre une fenêtre du
T mais ne la referme pas.
2) Ferme la fenêtre à la main
3) Lance un autre script (ou le même), toujours par double-clic


Testé, sans l'ombre d'un problème, ceci :

~> echo '#!/bin/bash' > test.command
~> echo 'echo "toto"' >> test.command
~> chmod +x test.command
~> cp test.command test2.command

Je referme la fenêtre, doubleclic test.command, ça s'ouvre, je referme,
doubliclic test2.command, ça s'ouvre aussi.

Comme le dit Jayce, tu devrais tenter de trasher tes prefs de terminal.
--
Nicolas

Avatar
blanc
Merci à toi, ainsi qu'à Jayce pour vos réponses.


Nicolas MICHEL wrote:

Testé, sans l'ombre d'un problème, ceci :

~> echo '#!/bin/bash' > test.command
~> echo 'echo "toto"' >> test.command
~> chmod +x test.command
~> cp test.command test2.command

Je referme la fenêtre, doubleclic test.command, ça s'ouvre, je referme,
doubliclic test2.command, ça s'ouvre aussi.


Je viens de tester. Aucun pb non plus. D'où j'en déduis que ça ne le
fait pas avec n'importe quel script, comme je l'avais dit un peu vite...
;-)

...

J'ai donc repris le dernier script et ai entrepris de cerner le pb par
"dichotomie". Je veux dire en éliminant à chaque fois la moitié des
lignes...

Et j'ai trouvé... la ligne fautive :

osascript -e 'tell application "Terminal" to activate'

Testez-la chez vous, en la précédent bien sûr d'un #!/bin/bash
(bien que ce ne soit pas vraiment utile), et vous devriez vous aussi
observer le même défaut (même pas besoin d'ailleurs de refermer la
fenêtre du Terminal)

Ai-je fait une erreur dans la dite ligne ?
Faut-il rajouter un "end tell" ?

JPaul.

--
/==/==- Jean-Paul BLANC
/ /--/--// quelque-part (somewhere)
|/| L | en (in)
/|| = ||| FRANCE

Avatar
Patrick Stadelmann
In article <1hx13sk.19xk3rtg8r0hsN%,
(JPaul) wrote:

J'ai donc repris le dernier script et ai entrepris de cerner le pb par
"dichotomie". Je veux dire en éliminant à chaque fois la moitié des
lignes...

Et j'ai trouvé... la ligne fautive :

osascript -e 'tell application "Terminal" to activate'


Il semblerait qu'un bug report ait été soumis en... 2003 !

<http://use.perl.org/comments.pl?sid900&op=&threshold=0&commentsort=0&
mode=thread&pid=0>

Patrick
--
Patrick Stadelmann

Avatar
blanc
Patrick Stadelmann wrote:

Il semblerait qu'un bug report ait été soumis en... 2003 !

<http://use.perl.org/comments.pl?sid900&op=&threshold=0&commentsort=0&
mode=thread&pid=0>


Ben voilà, c'est bien ça :-)

Merci encore.

JPaul.
--
/==/==- Jean-Paul BLANC
/ /--/--// quelque-part (somewhere)
|/| L | en (in)
/|| = ||| FRANCE

Avatar
bgrandin
JPaul wrote:

Quelqu'un sait-il pourquoi, et comment y remédier ?

Une autre question à ce sujet : existe-t-il un moyen de lancer un tel
script, toujours par double-clic, sans que la fenêtre du Terminal ne
soit visible ?


Je ne sais pas si ça peut t'aider, mais il est possible de mettre un
.command dans le Dock, sinon.

--
http://www.bdzone.com Le portail BD